Le ExtendedDismaxQParser de classe a une clause de classe membre statique:Accès membre protégé de la classe statique dans la sous-classe du parent
public class ExtendedDismaxQParser {
protected static Class Clause {
protected String foo, bar;
}
public Clause getAClause {
Clause c;
// misc code that isn't important
return c;
}
}
Je puis étendu cette classe dans un package différent:
public class SpecialDismaxQParser extends ExtendedDismaxQParser {
public void whatever() {
Clause c = super.getAClause();
boolean baz = c.foo.equals("foobar"); // <-- This doesn't compile
}
}
Il semble Comme si vous ne pouviez pas accéder à la variable membre foo, malgré le fait que la classe Clause est protégée et que la variable membre foo est également protégée. Je veux juste être en mesure de vérifier quelque chose à propos de la variable membre foo de la clause de classe statique protégée. Comment puis-je faire cela (de préférence sans réflexion)?
Je préférerais de beaucoup ne pas avoir à modifier la classe parente parce qu'elle fait partie d'une bibliothèque.
En effet, l'article n'est pas la classe d'être étendue. Voici un bon tableau de référence: http://stackoverflow.com/a/33627846/276052 – aioobe
Jetez un oeil à http://stackoverflow.com/questions/14534421/java-extending-inner-classes. – bradimus
J'avais écrit une réponse, mais mon internet s'est déclenché et il semble avoir été supprimé. Fondamentalement, faites les champs 'public', car ils ne sont actuellement visibles que pour les sous-classes de la classe interne (et ailleurs dans le même paquet). – bcsb1001