如何在Java8中使用lambda编写新的ListChangeListener()?
listItems.addListener(new ListChangeListener<Item>() {
@Override
public void onChanged(
javafx.collections.ListChangeListener.Change<? extends Item> c) {
// TODO Auto-generated method stub
}
});
这是我尝试的:
listItems.addListener(c->{});
但是 eclipse 指出:
该列表声明为:
ObservableList<Item> listItems = FXCollections.observableArrayList();
最佳答案
由于ObservableList
从addListener(InvalidationListener)
接口(interface)继承了Observable
,因此编译器无法确定要调用的版本。通过强制转换指定lambda的类型应该可以解决此问题。
listItems.addListener((ListChangeListener)(c -> {/* ... */}));
您还可以显式指定
c
的类型:listItems.addListener((ListChangeListener.Change<? extends Item> c) -> {/* ... */});