有数十个示例,这些示例是通过FXCollections
从FXML创建集合的(例如here):
<FXCollections fx:factory="observableArrayList">
<String fx:value="A"/>
<String fx:value="B"/>
<String fx:value="C"/>
</FXCollections>
但是我不明白它是如何工作的。毕竟,工厂方法是 no-arg 方法,所以String
元素在哪里?我以为这是默认属性,但是FXCollections
没有默认属性。 observableArrayList()
工厂方法的重载版本在文档和源代码中采用了集合元素的变量。但是,为什么FXML
使用此方法?它没有在文档中指定(或者我找不到)。我在文档中找到的全部是:
fx:factory属性是创建其类没有默认构造函数的对象的另一种方法。该属性的值是用于生成类实例的静态,无参数工厂方法的名称。例如,以下标记创建了一个可观察到的数组列表的实例,并填充了三个字符串值:
我觉得这是愚蠢的问题。但是谁能对我说清楚?
提前谢谢
P.S。对不起,我的英语
答案 0 :(得分:2)
observableArrayList()
工厂方法的重载版本在文档和源代码中采用了集合元素的vararg。但是,为什么FXML使用此方法?
不是。 FXCollections.observableArrayList()
用于创建列表,并且由于<String>
元素周围的元素是List
,因此将这些元素添加到列表中。产生相同结果的Java代码将是
ObservableList list = FXCollections.observableArrayList();
list.add("A");
list.add("B");
list.add("C");
即使文档中没有明确声明,也以与read-only list properties相同的方式对待列表。