Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在一元运算符java 8中使用引用方法_Java_Java 8_Method Reference_Functional Interface_Unary Operator - Fatal编程技术网

如何在一元运算符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;
}