这不起作用:
interface GenericFunctionalInterface {
<T> void doSomething(T obj);
}
public class Foo {
public final static GenericFunctionalInterface instance =
(GenericFunctionalInterface) (a) -> {
System.out.println(a);
};
}
实例化instance
的正确语法是什么?
注意
如副本所示,泛型方法无法简化为lambda表达式。但是要为此添加一些内容,只要方法参数的类型在接口的泛型类型约束内,就可以使用方法地址表示法来表示通用或不通用的方法。
例如,我们可以写instance = System.out::println;
因为T extends Object
,但我们无法写instance = Number::doubleValue;
,因为T
不会延伸Number
(不在<T extends Number> void doSomething(T obj)
内类型约束)。当然,如果我们写了Number::doubleValue;
,我们可以将其定义为{{1}}。