Java ではObject.getClass
、 の型シグネチャがありpublic final Class<?> getClass()
ますが、JavaDoc のコメントでは、実際には「Class<? extends |X|>
|X| は、getClass
呼び出される式の静的型の消去です」と記載されています。
これは実際に当てはまり、IDE などでサポートされているコンパイラによって強制されますが、どのような魔法がこれを可能にしますか? コンパイラはこのメソッドを特別な方法で扱いますか? それは実際getClass()
に各タイプのオーバーライドを生成しますか?
これは単にコンパイル時の構成であることを理解しています。実行時には、Class のジェネリック型パラメーターが何であったかによって違いはありません。