java – 如何用lambda写一个新的ListChangeListener()?

前端之家收集整理的这篇文章主要介绍了java – 如何用lambda写一个新的ListChangeListener()?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在 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->{});

但日食说:

The method addListener(ListChangeListener) is ambiguous for the
type ObservableList.

列表被声明为:

ObservableList<Item> listItems = FXCollections.observableArrayList();

解决方法

由于ObservableList从Observable接口继承addListener(InvalidationListener),编译器无法确定要调用的版本.通过转换指定lambda的类型应该可以解决这个问题.
listItems.addListener((ListChangeListener)(c -> {/* ... */}));

您还可以明确指定c的类型:

listItems.addListener((ListChangeListener.Change<? extends Item> c) -> {/* ... */});

猜你在找的Java相关文章