Перейти к содержимому
Java

Почему один и тот же класс может не приводиться к самому себе?

В JVM тип определяется не только полным именем класса, но и ClassLoader-ом, который его определил.

Senior26 августа 2026 г.
JVM

Для JVM идентичность класса складывается из полного имени и defining ClassLoader. Поэтому два загрузчика могут прочитать один и тот же com.example.User из одного байткода, но JVM получит два разных типа.

Так появляются ошибки вида User cannot be cast to User: имя в сообщении одинаковое, а ClassLoader-ы различаются. При диагностике полезно вывести value.getClass().getClassLoader() и загрузчик класса, к которому выполняется приведение.

Подробнее: ClassLoader-ы в JVM: Bootstrap, Platform, Application и parent delegation.

← Все вопросы и ответы