我有以下界面:
public interface Mapper {
public <T> T map(T element);
}
以及我做Mapper mapper = (int n) -> n*2;
时
我遇到了问题:
非法的lambda表达式:Mapper类型的方法映射是通用的
我在这里想念什么?如何创建在lambda表达式中使用的通用方法?
答案 0 :(得分:2)
您应该将定义更改为
public interface Mapper<T> { // type bound to the interface
T map(T element);
}
,然后将其用作:
Mapper<Integer> mapper = element -> element * 2; // notice Integer and not 'int' for the type
也可以写成:
Mapper<Integer> mapper = (Integer element) -> element * 2;