猿问

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

在 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

}

});


慕村9548890
浏览 107回答 2
2回答

慕运维8079593

MultipleSelectionModel( link ) 扩展了SelectionModel( link ),其中selectedItemProperty()实现了该方法。selectedItemProperty()返回一个ReadOnlyObjectProperty( link ) 实例,该实例扩展了ObservableValue( link ),该方法来自该addListener()实例。至于如何调用这些方法——这就是继承的工作原理。子类 ( MultipleSelectionModel) 继承其超类 ( ) 的所有属性SelectionModel。因此,您定义的任何方法都SelectionModel可以针对MultipleSelectionModel实例进行调用。

ibeautiful

当您调用时,ListView#getSelectionModel()您将获得一个对象,该对象是 的实例SelectionModel- 更具体地说,是 的实例MultipleSelectionModel。由于您现在有了一个实例,因此MultipleSelectionModel您可以调用该类中存在的方法,包括继承的方法。这意味着您可以执行以下操作:listView.getSelectionModel().selectedItemProperty().addListener(yourChangeListener);这相当于以下内容:MultipleSelectionModel<T> sModel = listView.getSelectionModel();ReadOnlyObjectProperty<T> selectedItemProp = sModel.selectedItemProperty();selectedItemProp.addListener(yourChangeListener);正如您所看到的,您正在使用涉及的每个对象的类。前者称为方法链,只是简写。
随时随地看视频慕课网APP

相关分类

Java
我要回答