Как я могу использовать ссылочный метод в UnaryOperator Java 8

В настоящее время у меня есть UnaryOperator как это

UnaryOperator<Object> defaultParser = obj -> obj;

Я не знаю, смогу ли я использовать ссылку на метод в таких операциях. Пример:

UnaryOperator<String> defaultParser = String::toString;

Но с общим способом, а не только String,

2 ответа

Решение

Если вы просто хотите избежать лямбда-выражения, UnaryOperator имеет статический identity() метод:

UnaryOperator<Object> defaultParser = UnaryOperator.identity();

Если вам конкретно нужна ссылка на метод (почему??), вы можете определить метод в своем классе

public static <T> T identity(T t) {
    return t;
}

Тогда вы сможете использовать его как ссылку на метод:

UnaryOperator<Object> defaultParser = MyClass::identity;

Да, вы можете использовать UnaryOperator.identity() как:

UnaryOperator<Object> defaultParser = UnaryOperator.identity();

который определяется с помощью лямбда-выражения как

static <T> UnaryOperator<T> identity() {
    return t -> t;
}
Другие вопросы по тегам