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
È stato utile?

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
scroll top