为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用 Java 类的类的情况下调用该方法?

如何在不使用 Java 类的类的情况下调用该方法?

慕村9548890 2024-01-25 21:27:00
在 OOP 中,我了解到我们可以通过使用方法的类来调用方法。例如:Person person = new Person();person.methodA(); // calling the method in person class基于ListView (链接)的javafx文档 ,getSelectionModel()是ListView类的方法(可以工作)。但 selectedItemProperty() 方法是 SelectionModel 的类(链接)如何在不使用 SelectionModel 类的情况下调用 selectedItemProperty() 方法?那么这个addListener方法来自哪个类呢?myListView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<TodoItem>() {///  blah blah blah}});
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

MultipleSelectionModel( link ) 扩展了SelectionModel( link ),其中selectedItemProperty()实现了该方法。

selectedItemProperty()返回一个ReadOnlyObjectProperty( link ) 实例,该实例扩展了ObservableValue( link ),该方法来自该addListener()实例。

至于如何调用这些方法——这就是继承的工作原理。子类 ( MultipleSelectionModel) 继承其超类 ( ) 的所有属性SelectionModel。因此,您定义的任何方法都SelectionModel可以针对MultipleSelectionModel实例进行调用。



查看完整回答
反对 回复 2024-01-25
?
ibeautiful

TA贡献1993条经验 获得超5个赞

当您调用时,ListView#getSelectionModel()您将获得一个对象,该对象是 的实例SelectionModel- 更具体地说,是 的实例MultipleSelectionModel。由于您现在有了一个实例,因此MultipleSelectionModel您可以调用该类中存在的方法,包括继承的方法。这意味着您可以执行以下操作:


listView.getSelectionModel().selectedItemProperty().addListener(yourChangeListener);

这相当于以下内容:


MultipleSelectionModel<T> sModel = listView.getSelectionModel();

ReadOnlyObjectProperty<T> selectedItemProp = sModel.selectedItemProperty();

selectedItemProp.addListener(yourChangeListener);

正如您所看到的,您正在使用涉及的每个对象的类。前者称为方法链,只是简写。


查看完整回答
反对 回复 2024-01-25
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信