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

时间:2017-03-06 05:30:14

标签: java javafx

ChangeListener有一个带有签名

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

但是,当我尝试执行以下操作时,它说&#34; lambda表达式中的&#34;不兼容的类型参数&#34;。

ChangeListener listener1;
listener1 = (ObservableValue<? extends Number> observableValue , Number number, Number number2) -> 

{ textareaDescription.setText((String) options1.get(number2.intValue())); textareaMustCheck.setText((String) options2.get(number2.intValue())); };

然而,下面的代码完美无缺

 choiceboxStrategy.getSelectionModel().selectedIndexProperty().addListener((ObservableValue<? extends Number> observableValue, Number number, Number number2) -> {
            textareaDescription.setText((String) options1.get(number2.intValue()));
            textareaMustCheck.setText((String) options2.get(number2.intValue()));

1 个答案:

答案 0 :(得分:1)

嗯,答案很简单。你的Lambda表达式是错误的。将其替换为此版本:

    ChangeListener<Number> listener1;

    listener1 = (observableValue , number, number2) -> 

    { textareaDescription.setText((String) options1.get(number2.intValue())); textareaMustCheck.setText((String) options2.get(number2.intValue())); };

您使用ChangeListener作为原始类型。

添加了:

这是您的侦听器的缩短版本,可以无错误地编译:

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

如果您仍然看到错误,那么它们是由您未向我们展示的其他代码引起的,因此我们无法对其进行任何说明。