Эта страница в учебнике по Java очень меня смутила вопрос 2d. Рассматривая здесь документацию по Java, похоже, что статический вложенный класс 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, который защищен пакетом?
Он является static
, но он не protected
. Javadocs пропускает public
модификатор. Если вы посмотрите на источник, полная декларация класса для Filler
:
public static class Filler extends JComponent implements Accessible