Java lambda表达式中的类型参数不兼容

Java lambda表达式中的类型参数不兼容,java,javafx,Java,Javafx,ChangeListener有一个带有签名的方法changed() void changed(ObservableValue<? extends T> observable, T oldValue, T newValue); void changed(ObservableValue答案很简单。你的Lambda表达式是错误的。用这个版本替换它: ChangeListener<Number> listener1; listener1 = (observab

ChangeListener
有一个带有签名的方法
changed()

void changed(ObservableValue<? extends T> observable, T oldValue, T newValue);

void changed(ObservableValue答案很简单。你的Lambda表达式是错误的。用这个版本替换它:

    ChangeListener<Number> listener1;

    listener1 = (observableValue , number, number2) -> 

    { textareaDescription.setText((String) options1.get(number2.intValue())); textareaMustCheck.setText((String) options2.get(number2.intValue())); };
ChangeListener1;
listener1=(observeValue,number,number2)->
{textareaDescription.setText((字符串)选项1.get(number2.intValue());textareaMustCheck.setText((字符串)选项2.get(number2.intValue());};
您使用ChangeListener作为原始类型

增加:

这是侦听器的缩短版本,编译时不会出现错误:

    ChangeListener<Number> listener1 = (v, o, n) -> {int i2 = n.intValue();};
ChangeListenerListener1=(v,o,n)->{inti2=n.intValue();};

如果你仍然看到错误,那么它们是由你没有向我们展示的其他代码引起的,因此我们不能对此发表任何意见。

是否假定它是
=>
,然后
->
?已更正,但仍然不起作用@Henry我认为我们需要一个。我不知道
可观察值
更改侦听器
是如何定义的,b但如果我尝试使用其他类,则不会出现错误。因此,我认为我们需要更多信息。
ChangeListener
接受一个参数,但您没有在声明中指定一个参数(例如
ChangeListener listener1
).@MikaelF What
ChangeListener
接受类型参数?没有。我们没有得到足够的关于他使用的类的信息,所以可能还有另一个
ChangeListener
这样做——但是我们有足够的信息来猜测吗?intValue()中仍然显示错误请参阅我的简化版本。
    ChangeListener<Number> listener1;

    listener1 = (observableValue , number, number2) -> 

    { textareaDescription.setText((String) options1.get(number2.intValue())); textareaMustCheck.setText((String) options2.get(number2.intValue())); };
    ChangeListener<Number> listener1 = (v, o, n) -> {int i2 = n.intValue();};