Eclipse 中的 Lambda 类型不匹配

Lambda type missmatch in Eclipse

我正在尝试使用 lambda 运算符,我已经设法用其他方法做了类似的事情,但是这个给出了一个错误。

有问题的方法:

public Icon setOnClick(IconClick e) {
    this.click = e;
    return this;
}

和:

public interface IconClick {
    boolean onClick(Player p, Icon i, InventoryClickEvent e);
}

在这里,我尝试使用 lambda:

.setOnClick((Player p, Icon i, InventoryClickEvent e) -> {
        //Code in here
    }));

但是 Eclipse 一直报错:

The method setOnClick(IconClick) in the type Icon is not applicable for the arguments ((Player p, Icon i, InventoryClickEvent e) -> {})

它甚至建议在图标 class 中创建一个带有参数 IconClick 的方法,但这是我正在尝试使用的方法。

(使用Java8,编译器兼容级别:1.8和Eclipse版本:2018-12(4.10.0))

您可能只是缺少 return 类型:

IconClick onClick = (Player p, Icon i, InventoryClickEvent e) -> {
     // some logic in here
     return false; // must return 'false' or 'true' 
};

Icon icon = new Icon().setOnClick((p, i, e) -> false); // or 'onClick'