Java JComboBox泛型

Java JComboBox泛型,java,swing,generics,jcombobox,type-erasure,Java,Swing,Generics,Jcombobox,Type Erasure,最近,我阅读了更多关于Java泛型的内容,并阅读了这篇文章:,这篇文章基本上说Java总是向后兼容的 现在,Java对JComboBox做了什么?用Java 7编写的代码,即JComboBox comboBox=newjcombobox()在Java6中应该编译得很好,但是当类型被删除时,它将作为原始类型进行编译 然而,正如你在谷歌上搜索时很容易看到的那样,现在有三个不同的问题: 首先,Java6不在泛型上编译,而应该使用类型擦除来编译,并将其视为原始类型 第二,甚至没有使用具体化,所以在Ja

最近,我阅读了更多关于Java泛型的内容,并阅读了这篇文章:,这篇文章基本上说Java总是向后兼容的

现在,Java对JComboBox做了什么?用Java 7编写的代码,即JComboBox comboBox=newjcombobox()在Java6中应该编译得很好,但是当类型被删除时,它将作为原始类型进行编译

然而,正如你在谷歌上搜索时很容易看到的那样,现在有三个不同的问题:

  • 首先,Java6不在泛型上编译,而应该使用类型擦除来编译,并将其视为原始类型
  • 第二,甚至没有使用具体化,所以在Java7中没有任何收获
  • 第三,使用原始类型的Java7代码给出警告
因此,似乎没有正确的方法


注意。

您可以指定语言目标级别和字节码目标级别。通过这种方式,您可以使用特定版本的所有语言功能,并针对特定的vm版本进行编译。我用以下设置测试了您的示例:语言级别7,字节码版本6,它编译得很好


但是您仍然需要根据jdk 7编译它,因此编译器知道JCombobox是通用的。

好吧,钻石操作符是在Java 7中引入的,所以我不确定您为什么会说:它应该在Java 6中编译得很好。因为不会的。@ErikPragt我可能会想另一种方式。。。所以我想错了方向?。如果要为旧版本编译,必须使用
-target
选项。