2012-09-10 30 views
6

Esta no es una pregunta directa. En mi caso, la variable de la clase externa y el nombre del argumento del método setter de la clase interna es el mismo. como:¿Cómo acceder a la variable de clase externa sombreada desde la clase interna?

class Problem { 
    String s; 
    int p; 
    class Inner { 
     String testMethod() { 
     return s = "Set from Inner"; 
     } 
     void setP(int p) 
     { 
      p=p; //it will do self assignment 
     } 
    } 


} 

ahora yo bisela inicializar exterior variable de instancia de clase p con this.p=p ya que indica la clase interna. De nuevo, no puedo hacer Problem.p=p;, se produce un error. Ahora, ¿cómo puedo asignar p externo, manteniendo el método interno de Clase setP(int p) argumento mismo nombre p?

+0

También marque esta respuesta http://stackoverflow.com/questions/12139160/inner-class-access-to-outer-class-me DTO-mismo método de nombres/12139195 # 12139195 –

+0

@Nandkumar que acabo de ver, buena explicación :) –

Respuesta

8

Así es como se puede/debe hacerlo:

Problem.this.p 
+0

gracias, funciona! :) –

1

Uso de REFERE p a clase externa como

Problem.this.p = p; 
1

uso de este

class Problem { 
String s; 
int p; 
class Inner { 
    String testMethod() { 
    return s = "Set from Inner"; 
    } 
    void setP(int p) 
    { 
     Problem.this.p=p; //it will do assignment 
    } 
    } 
} 
0
class Problem { 
String s; 
int p; 
class Inner { 
    String testMethod() { 
    return s = "Set from Inner"; 
    } 
    void setP(int p) 
    { 
     Problem.this.p=p; //it will do assignment to p of outer class 
    } 
} 
} 
+0

¿por qué downvote? solo tarde en la publicación de la respuesta .... –

+0

sí, su respuesta no debe ser downvoted. yo el apoyo del interrogador u. –

Cuestiones relacionadas