如何在一元运算符java 8中使用引用方法
目前,我有一个像这样的如何在一元运算符java 8中使用引用方法,java,java-8,method-reference,functional-interface,unary-operator,Java,Java 8,Method Reference,Functional Interface,Unary Operator,目前,我有一个像这样的UnaryOperator UnaryOperator<Object> defaultParser = obj -> obj; unarymoperator defaultParser=obj->obj; 我不知道在这类操作中是否可以使用方法引用。例如: UnaryOperator<String> defaultParser = String::toString; UnaryOperator defaultParser=String::t
UnaryOperator
UnaryOperator<Object> defaultParser = obj -> obj;
unarymoperator defaultParser=obj->obj;
我不知道在这类操作中是否可以使用方法引用。例如:
UnaryOperator<String> defaultParser = String::toString;
UnaryOperator defaultParser=String::toString;
但是,使用通用方法,而不仅仅是
字符串
如果您只是想避免lambda表达式,UnaryOperator
具有静态方法:
unarymoperator defaultParser=unarymoperator.identity();
如果您特别想要一个方法引用(为什么??),您可以在类中定义一个方法
public static <T> T identity(T t) {
return t;
}
公共静态T标识(T){
返回t;
}
然后您将能够将其用作方法参考:
UnaryOperator<Object> defaultParser = MyClass::identity;
UnaryOperator defaultParser=MyClass::identity;
是的,您可以使用as:
unarymoperator defaultParser=unarymoperator.identity();
使用lambda表达式定义为
static <T> UnaryOperator<T> identity() {
return t -> t;
}
静态一元运算符标识(){
返回t->t;
}
对象::toString
然后呢?由于toString
是在对象上定义的,所以这应该是您在“通用方式”中查找的对象。@SilvioMayolo但是一元数可能会接收到一个对象,而不仅仅是字符串,我希望返回该对象。String::toString
与obj->obj
不同,因为前者将为null
输入抛出NullPointerException
,而后者则不会。如果这不是一个问题,甚至不是预期的行为,您可以简单地使用unarymoperator defaultParser=Objects::requirennull代码>
UnaryOperator<Object> defaultParser = UnaryOperator.identity();
static <T> UnaryOperator<T> identity() {
return t -> t;
}