以下のコードスニペットがあり、これは問題なく動作します。私はString
オブジェクトを含むArrayList
としてc
を定義したのでコンパイル時エラーが発生しませんが、Integer
オブジェクトを追加しています。だから、なぜそれはコンパイル時間/実行時エラーをスローしていないのですか?ジェネリックで宣言されたこのコレクションでエラーはありませんか?
Collection c = new ArrayList<String>();
c.add(123);
私が知っているのは、コンパイル時のエラーですが、それ以上の理由はありません。これらのコードスニペットの論理的な違いは何ですか?それは時間のコンパイルエラースローしなかった理由
Collection<String>() c = new ArrayList();
c.add(123);
最初に '' rawtypes "'という警告を出すべきです。コンパイラに注意してください。コードリントを無料で保つことは良い考えです。 –