Класс ExtendedDismaxQParser имеет статический класс член Пунктом:Доступ к защищенным членам статического класса в подкласс родительского
public class ExtendedDismaxQParser {
protected static Class Clause {
protected String foo, bar;
}
public Clause getAClause {
Clause c;
// misc code that isn't important
return c;
}
}
Затем я расширил этот класс в другом пакете:
public class SpecialDismaxQParser extends ExtendedDismaxQParser {
public void whatever() {
Clause c = super.getAClause();
boolean baz = c.foo.equals("foobar"); // <-- This doesn't compile
}
}
Он выглядит например, вы не можете получить доступ к переменной-члену foo, несмотря на то, что класс Clause защищен, а переменная-член foo также защищена.
Я просто хочу проверить что-то о переменной-члене foo защищенного статического класса Clause. Как я могу это сделать (желательно без отражения)?
Я бы предпочел не изменять родительский класс, потому что он является частью библиотеки.
Это потому, что пункт не класс расширяется. Вот хорошая справочная таблица: http://stackoverflow.com/a/33627846/276052 – aioobe
Взгляните на http://stackoverflow.com/questions/14534421/java-extending-inner-classes. – bradimus
Я написал ответ, но мой интернет ушел, и он, кажется, был удален. По существу, создавайте поля 'public', поскольку они в настоящее время видны только для подклассов внутреннего класса (и в других местах одного и того же пакета). – bcsb1001