在Java中,当您从类外部引用Vector
中的私有类时会发生什么?
例:
public class A {
private class B {}
public Vector<B> vector = new Vector<B>();
public A() {
vector.add(new B());
}
}
public class C {
public C() {
A a = new A();
a.vector.get(0); // <- What does this return?
}
}
最佳答案
您可以尝试以下代码:
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
。关于java - 公开使用的Vector中的私有(private)类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3121506/