0

最近我一直在阅读更多关于 Java 泛型的内容并来到这篇文章: http: //gafter.blogspot.nl/2004/09/puzzling-through-erasure-answer.html,它基本上说 Java 将始终向后兼容.

现在,Java 对 JComboBox 做了什么?用 Java 7 编写的代码,即。JComboBox<String> comboBox = new JComboBox<>();应该在 Java 6 中编译得很好,但是作为原始类型,因为该类型已被删除。

但是,正如您在谷歌搜索时很容易看到的那样,现在存在三个不同的问题:

  • 首先,Java 6 不会在泛型上编译,但它应该通过类型擦除来编译并将其视为原始类型。
  • 其次,甚至没有使用具体化,因此在 Java 7 中没有任何收获。
  • 第三,使用原始类型的 Java 7 代码会发出警告。

所以似乎没有正确的方法。

问候。

4

1 回答 1

1

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

但是您仍然必须针对 jdk 7 对其进行编译,因此编译器知道 JCombobox 是通用的。

于 2013-07-23T07:26:45.690 回答