java - 键入 DefaultListModel 以避免强制转换

标签 java generics list model casting

Java 中有没有办法让 ListModel 只接受特定类型? 我要找的是类似 DefaultListModel<String> 的东西或 TypedListModel<String> ,因为 DefaultListModel 只实现了 addElement(Object obj)get(int index)返回 Object当然。

那样我总是必须从 Object 转换例如String并且不能保证我的模型中只有字符串,即使我想强制执行。

这是缺陷还是我使用列表模型的方式有误?

最佳答案

DefaultListModel 类确实在源代码的顶部有这个:

This class loosely implements the java.util.Vector API, in that it implements the 1.1.x version of java.util.Vector, has no collection class support, and notifies the ListDataListeners when changes occur. Presently it delegates to a Vector, in a future release it will be a real Collection implementation.

听起来这只是一个老类。我想如果您足够绝望,您可以编写自己的版本(实现 AbstractListModel 接口(interface))。如果您只是对必须一直将其转换为字符串感到恼火,那么 foreach 语法肯定会为您做到这一点吗?

关于java - 键入 DefaultListModel 以避免强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2549181/

相关文章:

java - C# - 在一行中将多个元素添加到 IList

java - 如何强制 java 服务器只接受 tls 1.2 并拒绝 tls 1.0 和 tls 1.1 连接

java - ArrayList 以某种方式清除,我不知道为什么

generics - 具有任何参数列表的函数的通用仿函数

java - 从列表中删除项目 - 转换

c# - 选择列表中属性在另一个列表中的元素的快速方法

java - 如何从 JTextPane 获取文本颜色?

java - 删除字符串中的重复项并创建新字符串

java - 如何在 Jackson 中为泛型创建自定义反序列化器?

c# - .NET:如何检查泛型类中的类型?