java - 为什么 JavaFX TableView#setItems 采用 ObservableList<T> 而不是 ObservableList<?扩展 T>?

标签 java list generics javafx tableview

我想知道为什么TableView<T>方法setItems不需要ObservableList<? extends T>作为参数,但是 ObservableList<T>

还有什么是最好的转型方式ObservableList<? extends T>ObservableList<T> 。我可以将第一个列表中的所有元素添加到第二个列表中,然后添加监听器来监听更改,但我想知道也许有更好的方法。

最佳答案

只是总结一下评论:

原因TableView<T>方法setItems不需要ObservableList<? extends T>作为参数,但是 ObservableList<T>这样您就可以使用 TableView.getItems().add(...) 将项目添加到列表中

但是,如果您确定永远不会使用TableView.getItems()返回的列表写入列表。最有效的方法是简单地转换你的 ObservableList<? extends T>到原始类型( ObservableList<T> )。

关于java - 为什么 JavaFX TableView#setItems 采用 ObservableList<T> 而不是 ObservableList<?扩展 T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48480045/

相关文章:

java - 将值添加到 List<String> = new ArrayList<String>();

JavaFX 反向裁剪和使用文本的裁剪?

java - 如何使用 Akka 对字符串求和?

python - 检查 Python 数据框中的列表是否包含特定值,同时忽略 NaN

java - 如何避免此 java 泛型警告

c# - 在泛型集合的泛型方法上使用表达式lambda

java - 按外键值查询而不是左连接

java - 不兼容的类型。需要 : Object, 找到 : String?

python - 如何使用 NumPy 从列表创建多维数组?

swift - 在 Swift 中编写一个通用的主题-观察者实现