a instrução NomeDaClasse.this quer dizer que vc poderá acessar um membro ou método da instancia atual da sua classe…
T
TiagoTC
Ainda não entendi direito vmsb11… Tipo, o Car referencia a classe. E Car.this ? O que isso significa exatamente?
evertonsilvagomesjav
Thiago fiz uma pequena mudança pra vc entender melhor olha só:
publicclassCar{Stringnome;classEngine{Engine(){System.out.println(Car.this.nome);}}publicstaticvoidmain(String[]args){newCar().go();// Para essa instancia this.nome é null// ok? Seria o mesmo que new Car().nome;Carcar=newCar();car.nome="everton";// Com essa instancia this.nome// recebeu "everton" ok? Seria o mesmo que car.nome;Car.Engineeg=car.newEngine();}voidgo(){newEngine();}}
Como dentro de um método statico temos que instanciar dessa forma a InnerClass:
publicclassCarro{publicclassMotor{publicvoidturnOn(){System.out.println("Ligando o motor "+this.toString()+" do "+Carro.this.toString());System.out.println("Vruummm");}publicStringtoString(){return"Turbo V8";}}privateMotormotor=newMotor();publicvoidligar(){motor.turnOn();}publicStringtoString(){System.out.println("Dodge");}publicstaticvoidmain(Stringargs[]){newCarro().ligar();//Saída: "Ligando o motor Turbo V8 do Dodge"}}
Note que na classe motor, se usassemos só this, estariamos falando do this do motor. Usar Carro.this, faz com que eu veja o this do carro. Por isso, essa notação só faz sentido no texto de uma classe interna, querendo acessar o this da externa que a agrega. E, claro, essa classe interna não pode ser estática.
T
TiagoTC
humm, perfeito! Agora eu entendi! :thumbup:
Muito obrigado!!!
lina
Oi,
Você pode adotar this como uma referencia de sua janela ou classe.
Carro.this -> Ou seja, você está utilizando uma referencia da classe carro.