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 WhatChangeListener
接受类型参数?没有。我们没有得到足够的关于他使用的类的信息,所以可能还有另一个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();};