Почему я могу получить доступ к непубличному javax.swing.Box.Filler из другого пакета?

1

Эта страница в учебнике по 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, который защищен пакетом?

Теги:
inner-classes
access-modifiers
protected

1 ответ

1
Лучший ответ

Он является static, но он не protected. Javadocs пропускает public модификатор. Если вы посмотрите на источник, полная декларация класса для Filler:

public static class Filler extends JComponent implements Accessible
  • 0
    Ага! Я знал, что должен быть какой-то странный улов ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню