Я просто играю с структурой пакета. И к моему удивлению, я могу обойти классы по умолчанию, создав свой пакет и имя класса с этим именем.
Для 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)
Почему такое поведение? это ошибка или нормальное поведение?
