为什么我可以从另一个包访问非公共javax.swing.Box.Filler?

时间:2014-08-04 21:53:26

标签: java inner-classes protected access-modifiers

Java教程中的

This page让我对问题2d感到困惑。查看Java文档here,似乎静态嵌套类 javax.swing.Box.AccessibleBox受到保护,因此可以在子类或同一个包中访问它;而内部类 javax.swing.Box.Filler具有默认的访问修饰符 - 包受保护,对吗? - 所以它可以从同一个包中访问。但是,只需在默认的Eclipse项目中创建一个简单的类:

package sandbox;
import javax.swing.Box;
public class ExternalClass {
    Box.Filler var1; // Fine?
    Box.AccessibleBox var2; // Compile error - not visible???
}

为什么我可以访问Box.Filler;如果我可以访问它,那么为什么我不能访问Box.AccessibleBox,它受保护,应该比Box.Filler更明显,它是受包保护的?

1 个答案:

答案 0 :(得分:1)

它是static,但它不是protected。 Javadocs省略了public修饰符。如果查看源代码,Filler的完整类声明是:

public static class Filler extends JComponent implements Accessible