【问题标题】:Typed DefaultListModel to avoid casting键入 DefaultListModel 以避免强制转换
【发布时间】:2010-03-30 22:30:58
【问题描述】:
在 java 中有没有办法让 ListModel 只接受某种类型?
我正在寻找类似DefaultListModel<String> 或TypedListModel<String> 的东西,因为DefaultListModel 只实现addElement(Object obj) 和get(int index),当然返回Object。
这样我总是必须从 Object 转换为例如String 并不能保证我的模型中只有字符串,即使我想强制执行。
这是一个缺陷还是我以错误的方式使用列表模型?
【问题讨论】:
标签:
java
generics
list
model
casting
【解决方案1】:
类 DefaultListModel 确实在源代码的顶部有这个:
这个类松散地实现了java.util.Vector
API,因为它实现了 1.1.x 版本的
java.util.Vector,没有集合类支持,
并在发生更改时通知ListDataListeners。
目前它委托给Vector,
在未来的版本中,它将是一个真正的 Collection 实现。
听起来这只是一个古老的课程。如果你足够绝望,我想你可以编写自己的版本(实现 AbstractListModel 接口)。如果您只是对必须一直将其转换为 String 感到恼火,那么 foreach 语法肯定会为您做到这一点吗?