最近、JVM にはプリミティブ型のクラス表現があることを知りました。たとえば、、、int.class
さらにdouble.class
はvoid.class
.
私が理解していないのは、なぜこれらがそこにあるのかということです。それらは機能的な役割を果たしていないようです。リフレクションを使用してクラスを検索したところ、コンストラクターもメソッドもフィールドもありませんでした。すべての意図と目的のために、それらは空っぽで役に立たないように見えます。プリミティブ型変数は、次のように false を返すことで示されるように、それぞれのクラスのインスタンスではありません。
int a = 3;
int.class.isInstance(a);
では、なぜそれらは存在するのでしょうか? おそらくコンパイラか何かのために、何らかの目的を果たさなければなりませんが、それが何であれ、私には完全に理解できません。Integer APIint.class
にはへの明示的な参照もあります(各プリミティブ型とそれぞれのラッパー オブジェクトについても同様です)。JLS では、それらの存在、ましてやその使用についての言及を見つけることができませんでした。