Как я могу использовать ссылочный метод в 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;
}