为啥我可以从另一个包访问非公共 javax.swing.Box.Filler?
Posted
技术标签:
【中文标题】为啥我可以从另一个包访问非公共 javax.swing.Box.Filler?【英文标题】:Why can I access the non-public javax.swing.Box.Filler from another package?为什么我可以从另一个包访问非公共 javax.swing.Box.Filler? 【发布时间】:2014-09-27 11:43:38 【问题描述】: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】:是static
,但不是protected
。 Javadocs 省略了public
修饰符。如果您查看源代码,Filler
的完整类声明是:
public static class Filler extends JComponent implements Accessible
【讨论】:
以上是关于为啥我可以从另一个包访问非公共 javax.swing.Box.Filler?的主要内容,如果未能解决你的问题,请参考以下文章
无法访问另一个程序集中的公共类型成员。我有两个程序集,我想从另一个程序集中的一个程序集访问公共成员
如何通过 GetComponent 从另一个游戏对象中的另一个脚本访问变量?