private ArrayList<String> colors = new ArrayList<String>();
上記の例を見ると、ジェネリックの主なポイントはコレクションに型を強制することです。したがって、プログラマの裁量でStringにキャストする必要がある "Objects"の配列を持つ代わりに、ArrayListのコレクションに "String"型を適用します。これは私にとって初めてのことですが、正しく理解していることを確認したいだけです。この解釈は正しいのでしょうか?Javaジェネリックは主にコレクションの要素に静的型を強制する方法ですか?
コンパイル時にのみ、実際には型の安全性が実行時に追加されないことに注意してください。実行時に型が破棄され、何かが起こる可能性があります。 Genericsは、ドキュメント/明快さとコンパイル時のチェックのためのものです。 – davetron5000
@ davetron5000 true! Javaはこの「機能」タイプ消去を呼び出します。http://java.sun.com/docs/books/books/tutorial/java/generics/erasure.html 個人的には、私はそれがこれまでで最も厄介なものであると感じています。 – poundifdef
既存のコードとの互換性を損なうことなく、改良されたジェネリックを追加することはできませんでした。 Neal Gafterはこれをかなり徹底的に説明しています:http://gafter.blogspot.com/2006/11/reified-generics-for-java.html –