首页 > 解决方案 > 我如何将这个 lambda 函数变成一个简单的函数?

问题描述

我正在尝试理解 Java 中的 lambda 格式,并且可以真正使用一些帮助将这个函数转换为标准函数来看看它是如何工作的:

Callback<ListView<Contacts>, ListCell <Contacts>> factory = lv -> new ListCell<>() {
    @Override
    protected void updateItem(Contacts item, boolean empty) {
        super.updateItem(item, empty);
        setText(empty ? "-" :( "[" + item.getContactID() + "] " + item.getContactName()));
    }
};

标签: javalambda

解决方案


从创建匿名Callback对象的代码开始:

Callback<ListView<Contacts>, ListCell<Contacts>> factory = new Callback<>() {
    @Override
    public ListCell<Contacts> call(ListView<Contacts> lv) {
    }
};

->然后将lambda 运算符的右侧粘贴为call()' 方法体。唯一需要的修改是使它成为一个return声明:

Callback<ListView<Contacts>, ListCell<Contacts>> factory = new Callback<>() {
    @Override
    public ListCell<Contacts> call(ListView<Contacts> lv) {
        return new ListCell<>() {
            @Override
            protected void updateItem(Contacts item, boolean empty) {
                super.updateItem(item, empty);
                setText(empty ? "-" :( "[" + item.getContactID() + "] " + item.getContactName()));
            }
        };
    }
};

推荐阅读