Accesso attributo di classe esterno da un'istanza di una classe interna
-
21-09-2019 - |
Domanda
Dato il seguente codice:
public class Outer
{
public final int n;
public class Inner implements Comparable<Inner>
{
public int compareTo(Inner that) throws ClassCastException
{
if (Outer.this.n != Outer.that.n) // pseudo-code line
{
throw new ClassCastException("Only Inners with the same value of n are comparable");
//...
Cosa posso scambiare fuori con la mia linea pseudo-codice in modo che io possa confrontare i valori di n per le due istanze della classe interna?
Cercando la soluzione più ovvia (n != that.n
) non può essere compilato:
Outer.java:10: cannot find symbol
symbol : variable n
location: class Outer.Inner
if (n != that.n) // pseudo-code line
Soluzione
Come metodi di istanza e variabili, una classe interna è associata ad un'istanza della sua classe contenitrice e ha accesso diretto ai metodi e campi dell'oggetto. - Java OO
Si potrebbe scrivere un metodo getter nella classe interna, che restituisce n
della classe esterna.
Metodo su Inner
:
public int getOuterN() { return n; }
Quindi confrontare con questo metodo:
getOuterN() != that.getOuterN()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow