以下代码完美无缺。
public class StaticClass {
public static void main(String[] args) {
L.P h = new L.P();
h.show();
}
}
class L {
static class P {
public void show() {
System.out.println("This is static nested class.");
}
}
}
那么为什么“。Thread.WeakClassKey t”无法访问java.lang.Thread类中的静态嵌套类“static class WeakClassKey extends WeakReference>”在我班上?
java.lang.Thread的源代码可以在这里找到:http://www.docjar.com/html/api/java/lang/Thread.java.html [第#1984行]。
答案 0 :(得分:6)
因为它不是public
类。
static class WeakClassKey
这具有包权限,因此只允许同一包中的类引用它。
答案 1 :(得分:5)
因为它不是public
或protected
类,因此对于位于不同包中的代码不可见。
答案 2 :(得分:4)
StaticClass
和L
位于同一个包中,P
类具有默认(即包私有)访问修饰符。这就是它可以访问的原因。 WeakClassKey
具有相同的修饰符 - 但是在不同的包中。只有来自java.lang
的班级才能访问它。