键入DefaultListModel以避免强制转换

时间:2010-03-30 22:30:58

标签: java generics list model casting

java中有没有办法让ListModel只接受某种类型? 我正在寻找的是DefaultListModel<String>TypedListModel<String>,因为DefaultListModel只实现了addElement(Object obj)get(int index),当然它返回Object

这样我总是必须从Object投射到例如String并且无法保证我的模型中只有字符串,即使我想强制执行。

这是一个缺陷,还是我以错误的方式使用列表模型?

1 个答案:

答案 0 :(得分:3)

类DefaultListModel确实在源代码中位于顶部:

  

这个类松散地实现了java.util.Vector     API,因为它实现了1.1.x版本     java.util.Vector,没有集合类支持,     并在发生更改时通知ListDataListener。     现在它委托给Vector,     在未来的版本中,它将是一个真正的Collection实现。

听起来它只是一个老班。如果你非常绝望,我想你可以编写自己的版本(实现AbstractListModel接口)。如果你只是厌倦了必须将它强制转换为String,那么foreach语法肯定会为你做这个吗?