У меня есть тот же класс, принадлежащий 2 различным пакетам.
package x1.y1.Class
packgage x2.y2.Class
Возможно ли, что если я x1.y1.Class
через загрузчик классов, вместо этого загружается x2.y2.Class
?
Проще говоря, нет (если вы случайно не загрузите неправильный).
Классы загружаются их полностью квалифицированным именем класса, которое включает в себя пакет (например, x1.y1.Class
)
Нет, этого не может быть по двум причинам:
Я просто попытался сделать это преднамеренно, заменив p1/Foo.class
на файл для класса p2.Foo
и получил следующую ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: p1/Foo (wrong name: p2/Foo)
Если вы хотите сделать это, вам понадобится загрузчик классов, который намеренно посмотрел бы в неправильном месте, а затем изменил загруженный байт-код.