【发布时间】:2013-10-23 03:53:41
【问题描述】:
我的印象是私有内部/嵌套类仅用于外部类/由外部类使用/访问。但是通过实验我意识到HashSet(不是Happy的外部类)可以访问该类。如果是这样,那么 private 的真正用途是什么?是否仅将类的 creation 限制在外部类中?
public class FreeMain {
private static class Happy {
int x;
private Happy(int x) {
this.x = x;
}
@Override
public boolean equals(Object o) {
return true;
}
@Override
public int hashCode() {
return 10;
}
}
public static void main(String[] args) {
Set<Happy> happiness = new HashSet<Happy>();
Happy h1 = new Happy(10);
Happy h2 = new Happy(20);
happiness.add(h1);
happiness.add(h2);
}
}
【问题讨论】:
-
已经有一段时间了,但是类 HashSet 无法将它的鼻子伸进 FreeMain 并访问其中的私有类或变量(沿着 class.variable 或 class.innerclass 的行。但是我想(未经测试)如果您创建了私有类的实例并将其传递给某人,那么它就可以使用它。当我很久以前学习 java 时,它没有 Set<...> 所以我不知道。
-
什至 what HashSet?你有什么问题?