栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:setCellValuefactory; Lambda与PropertyValueFactory; 优点缺点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:setCellValuefactory; Lambda与PropertyValueFactory; 优点缺点

PropertyValueFactory
需要正确命名的属性获取器。
getAColumnsProperty
可能不是一个。

在的情况下

new PropertyValueFactory<Appointment,LocalDate>("date")
Appointment
类需要包含一个
dateProperty()
方法;
返回的值需要扩展
ReadOnlyProperty
才能正常工作,并且如果返回的对象也是,则任何编辑只会自动导致模型中的更新
Writablevalue

Appointment
应使用的示例类
PropertyValueFactory<>("date")

public class Appointment {    private final ObjectProperty<LocalDate> date = new SimpleObjectProperty<>();    public final LocalDate getDate() {        return this.date.get();    }    public final void setDate(LocalDate value) {        this.date.set(value);    }    public final ObjectProperty<LocalDate> dateProperty() {        return this.date;    }}

如果不存在这样的方法,

PropertyValueFactory
则将使用getter来获取值,即
getDate()
,但是这种情况下,直到更新,在UI中才能看到模型中的更新
Cell
,因为
PropertyValueFactory
“不知道”在何处添加侦听器。

缺点
PropertyValueFactory

  • 只能
    public
    public
    类中找到方法
  • PropertyValueFactory
    使用反射
  • 不是类型安全的。在
    new PropertyValueFactory<Appointment, LocalDate>("date")
    编译器中不检查是否有合适的方法,该方法是否返回合适的类,或者例如属性getter返回a
    String
    而不是
    ReadOnlyProperty<LocalDate>
    可以导致
    ClassCastException
    s的a。
  • 没有编译时间检查。在lambda表达式中,编译器可以检查该方法是否存在并返回适当的类型。有
    PropertyValueFactory
    没有这样做。

如果您确定正确地在item类中实现适当的方法,则使用不会有任何问题

PropertyValueFactory
,但是如上所述,它有其缺点。此外,实施
Callback
更加灵活。您可以例如进行一些其他修改:

TableColumn<Appointment, String> column = ...column.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Appointment, String>, Observablevalue<String>> {    @Override    public Observablevalue<String> call(TableColumn.CellDataFeatures<Appointment, String> cd) {        Appointment a  = cd.getValue();        return Bindings.createStringBinding(() -> "the year: " + a.getDate().getYear(), a.dateProperty());    }});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496431.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号