如何为lambda编写通用方法?

时间:2019-01-07 01:27:59

标签: java lambda

我有以下界面:

public interface Mapper {
    public <T> T map(T element);
}

以及我做Mapper mapper = (int n) -> n*2;时 我遇到了问题:

  

非法的lambda表达式:Mapper类型的方法映射是通用的

我在这里想念什么?如何创建在lambda表达式中使用的通用方法?

1 个答案:

答案 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;