Java 7 中的 JCombobox 已更新为使用泛型 - 我一直认为这有点疏忽,所以我很高兴看到这种变化。
但是,当尝试以这种方式使用 JCombobox 时,我意识到我希望使用这些泛型类型的方法 still just return Object.
这到底是为什么?对我来说,这似乎是一个愚蠢的设计决定。我意识到底层 ListModel有一个通用的 getElementAt()
方法,所以我将使用它来代替 - 但它有点迂回地做一些看起来可能在 JComboBox 本身上被改变的事情。
最佳答案
我想你指的是 getSelectedItem()
?
原因是如果组合框是可编辑的,则所选项目不一定包含在支持模型中,并且不受泛型类型的限制。例如。如果您有可编辑的 JComboBox<Integer>
使用模型 [1, 2, 3],您仍然可以在组件中键入“foo”和 getSelectedItem()
将返回字符串“foo”,而不是整数类型的对象。
如果组合框不可编辑,您可以随时引用 cb.getItemAt(cb.getSelectedIndex())
实现类型安全。如果未选择任何内容,则返回 null
,这与 getSelectedItem()
的行为相同.
关于java - 为什么 JComboBox 上的 getSelectedItem() 不是通用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026230/