Runtime-идентичность обычного класса JVM определяется его binary name и определяющим class loader. Классы с одинаковым именем, загруженные разными defining loaders, могут быть разными типами.
Как можно идентифицировать загруженный класс в JVM? По каким атрибутам?
Runtime-идентичность обычного класса JVM определяется его binary name и определяющим class loader. Классы с одинаковым именем, загруженные разными defining loaders, могут быть разными типами.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Runtime-идентичность обычного класса JVM определяется его binary name и определяющим class loader. Классы с одинаковым именем, загруженные разными defining loaders, могут быть разными типами.
Поэтому совпадение полного имени пакета и класса не гарантирует возможность приведения. Для диагностики смотрят Class.getName(), Class.getClassLoader() и источник загрузки; initiating loader и defining loader не всегда одно и то же. Модуль и путь JAR помогают понять происхождение, но не заменяют основную пару идентичности класса.