java - 为什么 JComboBox 上的 getSelectedItem() 不是通用的?

标签 java swing generics jcombobox java-7

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/

相关文章:

java - 带有单个字母的正则表达式无法识别

java - 一次将数百个图像绘制到 JFrame 的有效方法是什么?

java - 如何在网格旁边插入 JPanel?

c# - 泛型和 Entity Framework : How do I return a different type depending on a column value

java - 从大型 XML 文件中删除不可打印和/或 unicode 字符

java - 使用 Liferay 6.1 在自定义 Assets 上实现索引器

c# - 在 C# 中将 Int 转换为通用枚举

swift - 符合通用协议(protocol)方法返回 PAT

java - 在我的 Java2D 程序中定期调用 repaint() 的最佳方法是什么?

java - 具有可扩展空父级的 JTree