gpt4 book ai didi

java - 公开使用的 Vector 中的私有(private)类

转载 作者:行者123 更新时间:2023-11-29 06:20:48 26 4
gpt4 key购买 nike

在 Java 中,当您从类外部引用 Vector 中的私有(private)类时会发生什么情况?

例子:

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
}

它会说类型 A.B 不可见

关于java - 公开使用的 Vector 中的私有(private)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com