ジェネリック医薬品の公式のJavaチュートリアルでは、型消去を説明し、なぜそれがコンパイラに追加されました。
ジェネリック型がインスタンス化されると、コンパイラーは型消去と呼ばれる手法でこれらの型を変換します。コンパイラーは、クラスまたはメソッド内の型パラメーターと型引数に関連するすべての情報を削除するプロセスです。型消去により、ジェネリックを使用するJavaアプリケーションは、ジェネリックの前に作成されたJavaライブラリおよびアプリケーションとのバイナリ互換性を維持できます。
これはおそらく実用的なアプローチであるか、おそらく最も痛みの少ないアプローチでした。しかし、ジェネリックは業界全体で広くサポートされているので、型消去を必要としないために何ができるでしょうか?後方互換性を壊す必要なく実行可能ですか?それが実行可能であれば、実用的ですか?
上記の引用の最後の文は自己参照になりましたか?つまり、「型消去により、ジェネリックを使用するJavaアプリケーションは、型消去を実行するJavaバージョンで作成されたJavaライブラリおよびアプリケーションとのバイナリ互換性を維持できます。」