Последовательность поиска и загрузки классов по классу-погрузчик:Класс Загрузка в JAVA
- Bootstrap загрузчик классов
- Расширение класса Loader
- Применение класса Loader
Теперь, если Я создаю пользовательский класс String с конструктором.
class String {
public String(){
System.out.println("This is user defined String Class");
}
}
, а затем выполняет код ниже:
public class Checking {
public static void main(java.lang.String[] args){
String s= new String();
}
}
Выход выше код «Это определяется пользователем строка класса»
Это означает, определенные пользователем класс загружается, который загружается Application Class-Loader
Итак, мой вопрос: сначала загружается загрузка, почему я получаю этот вывод? Надеюсь, мой вопрос ясен.
Полностью квалифицированное имя вашего класса не является java.lang.String. Так что это совершенно другой класс. –
Если я добавлю полное имя класса, то проблем не будет. Однако вы никогда не увидите код, который я написал выше. Но просто хочу проверить механизм загрузки классов JVM –
. Я хочу сказать, что ваш класс String не имеет то же имя, что и стандартный класс java.lang.String. Поэтому, когда Java загружает его, он не может найти его в пути класса bootstrap или пути класса расширения. Единственное место, где он присутствует, это путь класса приложения. your.own.String не совпадает с именем класса java.lang.String. Java загружает классы на основе их полностью подтвержденного имени, не основанного на их простом имени. Вот почему они могут быть 5 различными классами Element только в стандартной библиотеке: https://docs.oracle.com/javase/8/docs/api/allclasses-frame.html –