Java Eclipse中的Lambda类型不匹配

Java Eclipse中的Lambda类型不匹配,java,eclipse,lambda,functional-interface,Java,Eclipse,Lambda,Functional Interface,我试图使用lambda操作符,我已经设法用其他方法做了类似的事情,但是这个方法给出了一个错误 有关方法: public Icon setOnClick(IconClick e) { this.click = e; return this; } 以及: 在这里,我尝试使用lambda: .setOnClick((Player p, Icon i, InventoryClickEvent e) -> { //Code in here })); 但Ec

我试图使用lambda操作符,我已经设法用其他方法做了类似的事情,但是这个方法给出了一个错误

有关方法:

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

在这里,我尝试使用lambda:

.setOnClick((Player p, Icon i, InventoryClickEvent e) -> {
        //Code in here
    }));
但Eclipse不断给出这样的错误:

类型图标中的方法setOnClick(IconClick)不适用于参数((播放器p,图标i,目录ClickEvent e)->{})

甚至有人建议在Icon类中创建一个参数为IconClick的方法,但我正试图使用这个方法


(使用Java 8,编译器符合性级别:1.8和Eclipse版本:2018-12(4.10.0))

您可能只是缺少返回类型:

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'

你的程序编译了吗?Eclipse指出了一个错误,它不允许我编译它。然后试着从命令行编译它。抱歉,没有完全理解,你是说我应该在方法声明中添加一个默认的返回值吗?@HunterFP我想说你的lambda实现应该返回一个
boolean
值。
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'