加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:34:17 所属栏目:Java 来源:网络整理
导读:如何在 java8中用lambda编写一个新的ListChangeListener()? listItems.addListener(new ListChangeListenerItem() { @Override public void onChanged( javafx.collections.ListChangeListener.Change? extends Item c) { // TODO Auto-generated method st
如何在 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) -> {/* ... */});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读