0

最近、私は Java Generics についてもう少し読んでいて、次の記事にたどり着きました: http://gafter.blogspot.nl/2004/09/puzzling-through-erasure-answer.html。基本的に、Java は常に下位互換性があると述べています。 .

では、Java は JComboBox に対して何を行ったのでしょうか。Java 7 で書かれたコード。JComboBox<String> comboBox = new JComboBox<>();Java 6 では正常にコンパイルされるはずですが、型が消去されているため生の型としてコンパイルされます。

ただし、これをグーグルで検索すると簡単にわかるように、現在 3 つの異なる問題があります。

  • まず第一に、Java 6 は Generics でコンパイルしませんが、型消去を使用してコンパイルし、生の型として扱う必要があります。
  • 第二に、具体化さえ使用されていないため、Java 7 では何も得られません。
  • そして 3 番目に、生の型を使用する Java 7 コードは警告を出します。

そのため、正しい方法はないようです。

よろしく。

4

1 に答える 1

1

言語ターゲット レベルとバイトコード ターゲット レベルを指定できます。このようにして、特定のバージョンのすべての言語機能を使用して、特定の vm バージョンに対してコンパイルできます。次の設定であなたの例をテストしました:言語レベル7、バイトコードバージョン6で、問題なくコンパイルされます。

ただし、jdk 7 に対してコンパイルする必要があるため、コンパイラは JCombobox が汎用であることを認識します。

于 2013-07-23T07:26:45.690 に答える