目前,我有一个像这样的 UnaryOperator
UnaryOperator<Object> defaultParser = obj -> obj;
我不知道是否可以在这类操作中使用方法引用。例如:
UnaryOperator<String> defaultParser = String::toString;
但是使用通用的方式,而不仅仅是String
类型。
目前,我有一个像这样的 UnaryOperator
UnaryOperator<Object> defaultParser = obj -> obj;
我不知道是否可以在这类操作中使用方法引用。例如:
UnaryOperator<String> defaultParser = String::toString;
但是使用通用的方式,而不仅仅是String
类型。
如果你只想避免lambda表达式,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();
这个函数是通过lambda表达式定义的:
static <T> UnaryOperator<T> identity() {
return t -> t;
}
Object::toString
吗?由于toString
是在对象上定义的,因该是你在“通用方式”中寻找的东西。 - Silvio MayoloString::toString
is not the same asobj -> obj
, as the former will throw aNullPointerException
fornull
input whereas the latter won’t. If that’s not a concern or even intended behavior, you can simply useUnaryOperator<WhatEver> defaultParser = Objects::requireNonNull;
- Holger