Класс B должен быть загружен тем же ClassLoader, что и класс A ( proof-link ).
class A {
B fld = new B();
void f() {
B loc_var = new B();
{
}
Но что произойдет, если класс B уже был загружен с другим загрузчиком классов раньше?
Любой класс загружается только один раз. Но классы, загружаемые разными загрузчиками clas, - это разные классы.
Итак, класс B будет загружен еще раз загрузчиком классов класса A, и два разных (!) Класса будут сосуществовать (в одном экземпляре JVM)?