在编写代码时,我添加了以下代码:

nameComboBox.valueProperty().addListener(new ChangeListener<NameVO>() {

        @Override
        public void changed(
                ObservableValue<? extends NameVO> observable,
                NameVO oldValue, NameVO newValue) {
            // TODO Auto-generated method stub

        }
    });




Eclipse向我显示addListener下的红线,并将鼠标移到该行上,我可以看到以下消息:

The method addListener(ChangeListener<? super capture#6-of ?>) in the type ObservableValue<capture#6-of ?> is not applicable for the arguments (new ChangeListener<NameVO>(){})

为什么会这样呢?

[注意:我为剩余的ComboBox做了类似的事情,但是那边我没有得到这样的消息]

最佳答案

似乎期望使用ObservableValue<NameVO>而不是ObservableValue<? extends NameVO>

首先,请查看您如何显式说明ChangeListener的type参数:

new ChangeListener<NameVO>{ .... }

您明确指出它是NameVO,但是当您实际执行该方法时,您将其更改为? extends NameVO

08-03 16:57