Мне задавали этот вопрос во время интервью - «Возможно ли написать и загрузить собственную версию основных классов Java (например, String, Object и т. Д.)».Я сказал «нет», но интервьюер хотел знать, какие проверки имеет Java для предотвращения этого.Чтобы понять это, я написал следующий фрагмент кода в eclipse
package java.lang;
public final class String {
public static void main(String[] args) {
String s = new String();
}
}
Я ожидал, что компиляция не удастся, потому что у Java уже есть класс String в пакете java.lang.Но компиляция прошла, и я получил следующую ошибку при запуске программы:
Error: Main method not found in class java.lang.String, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
Почему компиляция прошла успешно, поскольку String уже присутствует в java.lang и как Java блокирует загрузку основных классов с помощьюразработчики