我如何在UnaryOperator Java 8中使用引用方法

时间:2018-12-05 02:06:52

标签: java java-8 method-reference functional-interface unary-operator

目前,我有一个UnaryOperator这样的人

UnaryOperator<Object> defaultParser = obj -> obj;

我不知道我是否可以在此类操作中使用方法引用。示例:

UnaryOperator<String> defaultParser = String::toString;

但采用通用方式,而不仅仅是String

2 个答案:

答案 0 :(得分:4)

如果只想避免使用lambda表达式,则UnaryOperator具有静态identity()方法:

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

如果您特别想要方法引用(为什么?),则可以在类中定义一个方法

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

然后您就可以将其用作方法参考:

UnaryOperator<Object> defaultParser = MyClass::identity;

答案 1 :(得分:2)

是的,您可以将UnaryOperator.identity()用作:

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

用lambda表达式定义为

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