在Pro JavaFX 2.0一书中的“cowbell”示例中,单选模型声明如下:
public SingleSelectionModel genreSelectionModel;
然后稍后在没有构造函数的情况下使用该实例。
public void addListenerToGenreSelectionModel {
genreSelectionModel.selectedIndexProperty().addListener(...); };
我的问题是 SingleSelectionModel
的 new
在哪里?在我看来,变量只是被声明了,但对象并没有被创建,就像示例前面的 IntegerProperties 一样。
genreSelectionModel
变量不是由另一个函数调用初始化的吗?
喜欢:
genreSelectionModel = listView.getSelectionModel()
编辑:快速浏览一下在线提供的示例:google books (第26-29页)看来您所指的是类中字段的声明。这不必在类内初始化。您可以将其视为类属性,一旦声明了自定义类型的对象(包含未初始化的变量),您就可以稍后在程序中为其赋予值
现在,不要误会我的意思,如果您尝试在没有初始化的情况下访问此属性,它将返回空指针异常。但正如书中所做的那样,您可以创建一个对象,然后使用另一个函数返回的值初始化该变量。
AudioConfigModel acModel = new AudioConfigModel();
acModel.genreSelectionModel = genreChoiceBox.getSelectionModel();
acModel.genreSelectionModel.selectFirst();
在第一行,genreSelectionModel 属性为 null。第二行有一个空行以方便查看第三个,你将一个对genreChoiceBox自己的selectionModel的“引用”放入你的属性中。然后在第四个你调用新实例化的属性上的函数
我是一名优秀的程序员,十分优秀!