のサブクラスに静的クラスのprotectedメンバにアクセスするクラス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
}
}
をに見えますクラスClauseが保護されていて、メンバ変数fooも保護されているにもかかわらず、fooメンバ変数にアクセスできないようです。
私は、保護された静的クラス句のメンバ変数fooについて何かをチェックできるようにしたいだけです。どのようにすればよいですか?
親クラスはライブラリの一部であるため、変更する必要はありません。
を通じて、残念ながらです。ここに良い参考表があります:http://stackoverflow.com/a/33627846/276052 – aioobe
http://stackoverflow.com/questions/14534421/java-extending-inner-classesを見てください。 – bradimus
私は答えを書いたが、私のインターネットは消えてしまい、それは削除されているようだ。基本的には、内部クラスのサブクラス(および同じパッケージ内の他の場所)でのみ表示されるため、フィールドを 'public'にします。 – bcsb1001