Java

Tuesday, March 28, 2006

 

Anonymous Inner Classes

Uma classe interna anônima, como diz o termo, é uma classe sem nome, ela é declarada ou como estendendo uma classe, ou como implementando uma interface. Vejamos o primero caso:

class Animal{
public void eat(){
System.out.println("food");
}
}

class Dog{
Animal p = new Animal(){
public void eat(){
System.out.println("meat");
}
public void qualquerCoisa(){}
};
}

Repare que a classe Dog tem apenas uma instância de variável, p. A sintaxe peculiar acima indica que uma instância de Animal será criada, mas ela será a instância de uma classe que estende Animal e a declaração dessa classe segue ao new Animal(). Outro ponto importante é que o método qualquerCoisa() não pode ser chamado por p.qualquerCoisa(), já que o tipo de p é a superclasse Animal, que não tem esse método.

Exemplo do segundo caso:

interface Enumeravel{
public boolean contavel();
}

class Numeros{
Enumeravel e = new Enumeravel(){
public boolean contavel(){return true;}
};
}

Por fim, a classse anônima pode ser criada também como argumento de um método, ou seja, no interior da sua declaração. Isso é muito comum ao lidarmos com listeners de objetos swing. Muitos já devem ter visto trechos de código semelhantes ao abaixo:

JButton botao;
botao.addListener(new ActionListener(){
public void actionPerformed(ActioEvent event){
}
};

Comments: Post a Comment



<< Home

Archives

March 2006   April 2006   May 2006   July 2006   August 2006  

This page is powered by Blogger. Isn't yours?