Inner Class em métodos

2 respostas
M

Ola pessoal, eu sei o que é uma inner class anonima em um método, um exemplo bem prático é os eventos listener
como no exemplo:

botaoa.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent evento) {
    ....
  }
});

agora o que eu quero fazer é eu mesmo criar uma inner class em um método, criar inner class em classe eu consegui, agora em método nao deu certo...

tntei o código abaixo
public class Teste {
	public Teste() {
		a();
	}
  public void a() {
		class Classe2 {
			public void ae() {
				System.out.println("Método B na Inner Class");
			}
		}
		System.out.println("Método A");
	}
	public static void main(String args[]) {
		new Teste();

	}
}

imprimir Método A

tentei na chamada do método por assim:
a(new Classe2());

tentei varias coisas mas da erro

alguem tem um exemplo

valeu??

obs: na certificação, que tipo de preguntas cai sobore inner class??

2 Respostas

E

Uma inner class definida dentro do metodo, ela só tem escopo de metodo.
portanto, vc só vai conseguir acessa-la de dentro do metodo.

L

Isso mesmo...

public class MyTestInner{

	private String texto="leandro";

	public void metodoA(){

	
		System.out.println(this.texto);


		class MyInner{
			
			private String texto="lima";
			

			void metodoB(){
				System.out.println(this.texto);

			}			

		}

		MyInner testInner = new MyInner();
	
		testInner.metodoB(); //dentro do método A
	
	}
	
	public static void main(String []args){
		
		MyTestInner test = new MyTestInner();
		
		test.metodoA();		

	}

}

A classe MyInner só pode ser acessada dentro do metodoB... veja só os resultados... tente acessar de fora.... sem chance.

Se fosse uma anonymous class como o caso dos listeners, poderíamos acessar os membros, mesmo que privados, da classe externa utilizando this.NomeDaClasse.atributo/método....

Bastante interessante a questão....

Criado 26 de junho de 2003
Ultima resposta 26 de jun. de 2003
Respostas 2
Participantes 3