Недавно я узнал, что существуют Class представления для примитивных типов в JVM. Например, int.class
, double.class
и даже a void.class
.
Я не понимаю, почему они есть. Кажется, что они не выполняют какую-либо функциональную роль. Используя отражение, я просматривал классы, и у них нет конструкторов, методов и полей. По сути, они кажутся пустыми и бесполезными. Первичные переменные типа не являются даже экземплярами их соответствующих классов, о чем свидетельствует следующее возвращение false:
int a = 3;
int.class.isInstance(a);
Так почему они существуют? Они должны служить какой-то цели, может быть, для компилятора или чего-то еще, но что бы это ни было, полностью вне меня. Существует даже явная ссылка на int.class
в Integer API (а также для каждого примитивного типа и его соответствующего объекта-оболочки). Я не смог найти ссылки на их существование, а тем более их использование, в JLS.