Я просто играю с структурой пакета. И к моему удивлению, я могу обойти классы по умолчанию, создав свой пакет и имя класса с этим именем.
Для ex:
Я создал пакет под названием java.lang
, а Class - Boolean
. Когда я импортирую java.lang.Boolean
, это не версия JDK Boolean
. Это мое. Он просто показывает методы Objects
, которые есть у каждого объекта java.
Почему так? Почему мне разрешено создавать пакет java.lang
? И программа работает нормально.
Другой дефолт, если я создаю Class
с именем Object
и попытаюсь запустить программу, а затем исключение
java.lang.SecurityException: Prohibited package name: java.lang
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
Почему такое поведение? это ошибка или нормальное поведение?