4

java-compiler が、変数が指定されているコレクションに非固有のコレクションを割り当てることを許可する理由を理解できません。このような:

    ArrayList list = new ArrayList();
    // Operations on list
    ArrayList<String> stringList = list;

これにはあらゆる種類のキャストエラーが発生する可能性があります。コンパイラが最初からこれを行うのを止めた方が理にかなっているように思えます。

私は言語のこのやや奇妙な側面に興味があるので質問しているだけです.実際にはコードを動作させるのに問題はありません.それ)。

4

2 に答える 2

6

ジェネリックまたはJava 5の前のレガシーコードをサポートするためだけです。

で導入されたジェネリックJava SE 5とコレクションは、ずっと前から実行されています。したがって、1.5 より前の Collection フレームワークを見ると、 ArrayListが表示されますが、generic.

于 2012-10-10T08:56:24.523 に答える
2

生の型 (ジェネリック パラメーターのない ArrayList など) を使用すると、抑制されていないと警告が発生するため、「-Werror」フラグを使用して「警告で失敗する」ことを検討することもできます。

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html

(ただし、個人的には、このフラグはまだ使用していません)

于 2012-10-10T10:50:09.277 に答える