型消去

型消去 () とは、型変数が存在するクラスや構造体において、型変数を消去すること。
C++.
C++では、何らかの条件を満たす様々な型のオブジェクトをカプセル化し、テンプレートを使用しつつ実行時の多態性を実現する技法のことを言う。
以下のような利用例がある。
Java.
J2SE 5.0でジェネリックプログラミングを行うために、総称型が導入された。しかし、C++のテンプレートのように、異なる型引数のセットに応じて異なるクラスを作成することは、jarファイルの肥大化を招くと判断された。代わりに、どのような型引数が与えられても、型引数が消去 (型消去という用語はここから来ている) されたかのように見える単一のクラスを用いることにした。以下のようなコードはコンパイルすることができない。
new T();
new T[]{};
また、以下のようなコードは意味がない。
T.someStaticMethod();
T.someStaticField;
型変数の出現箇所においては、型消去を行うフェーズで、適宜キャストがコンパイラによって暗黙的に挿入される。
java.lang.Object.getClass は codice_7を返すと宣言されているが、任意のcodice_8型のインスタンスに対して呼び出すとcodice_9を返す。ただし、codice_10はcodice_8のraw型である。