我有一个功能界面
@FunctionalInterface
interface MyInterface {
<T> T modify(Object);
}
我可以为这个界面创建一个匿名类
MyInterface obj = new MyInterface(){
@Override
<T> T modify(Object obj){
return (T) obj
}
}
如何为此创建lambda表达式。
MyInterface obj -> {return (T) obj;}; // ! ERROR as T is undefined
答案 0 :(得分:4)
方法范围内的泛型不能用于lambda表达式。它将抛出
非法lambda表达式:MyInterface类型的方法修改是通用的
您需要在类范围内设置泛型。
@FunctionalInterface
interface MyInterface<T> {
T modify(Object obj);
}
然后使用如下:
MyInterface obj2 = o -> {return o;};