Вы можете попробовать этот код:
public static void main(String[] args) {
A a = new A();
Object o = a.vector.get(0); // <- What does this return?
System.out.println(o.getClass());
}
Класс A $ B, поэтому он знает, что B является внутренним классом A.
Но вы не можете получить доступ ни к одному из членов B. Например, если вы измените класс A на:
public class A {
private class B {
public int x;
}
public Vector<B> vector = new Vector<B>();
public A() {
vector.add(new B());
vector.get(0).x = 10;
}
}
Вы все еще не сможете сделать это:
public static void main(String[] args) {
A a = new A();
System.out.println(a.vector.get(0).x); // this won't compile
}
Он скажет the type A.B is not visible
.