Я не могу легко найти его в JLS/JVMSpec или в SO. Я уверен, что его, должно быть, спросили...
Итак, что делает "новое" на самом деле? Предположим, что мы создаем класс B в A:
class A {
// ...
new B();
// ...
}
Это эквивалентно
class A {
// ...
A.class.getClassLoader().loadClass("B canonical name").newInstance();
// ...
}
?
Это или не работает так, как в любой среде?
Буду признателен, если вы можете указать мне соответствующую главу в JLS/JVMSpec. Спасибо!
Изменить: мы не можем вызвать вызов B.class.getCanonicalName()
в loadClass()
, так как B еще не загружен. JVM должен разрешить имя на основе оператора импорта.