Sie sind auf Seite 1von 4

Classes annimos

Classes annimas tornam o cdigo mais conciso. Permite declarar e instanciar uma classe ao mesmo tempo.
So como as classes locais, a diferena que ela no possuem nome. Utilizam-se quando queremos utilizar
uma classe local uma nica vez.

Declarao de classes annimas


Embora as classes locais sejam declaraes de classe, classes annimas so expresses, o que significa que
elas so definidas dentro de uma expresso. O exemplo a seguir, ClassAnonima, utiliza classes annimas
nas demonstraes de inicializao das variveis locais cumprimentarFrances e

cumprimentarIngles, Mas utiliza a classe local para inicializar a varivel cumprimentarTuga:

package ClasseAnonima;
public class ClassAnonima {
interface AloMundo{
public void cumprimentar();
public void cumprimentarAlguem(String alguem);
}
public void DigaAlo() {
class CumprimentarPortugues implements AloMundo {
String nome = "Mundo";
public void cumprimentar() {
cumprimentarAlguem("Mundo");
}
public void cumprimentarAlguem(String alguem) {
nome = alguem;
System.out.println("Alo " + alguem);
}
}
AloMundo cumprimentarTuga = new CumprimentarPortugues();
AloMundo cumprimentarFrances = new AloMundo() {
String nome = "tout le monde";
public void cumprimentar() {
cumprimentarAlguem("tout le monde");
}

public void cumprimentarAlguem(String alguem) {


nome = alguem;
System.out.println("Salut " + nome);
}
};

AloMundo cumprimentarIngles = new AloMundo(){


String nome = "Wold";
public void cumprimentar() {
cumprimentarAlguem("World");
}
public void cumprimentarAlguem(String someone) {
nome = someone;
System.out.println("Hello, " + nome);
}
};
cumprimentarTuga.cumprimentar();
cumprimentarFrances.cumprimentarAlguem("Mario");
cumprimentarIngles.cumprimentar();
}
public static void main(String... args) {
ClassAnonima minhaApp =
new ClassAnonima();
minhaApp.DigaAlo();
}
}

Sintaxe de Classes Annimas


Uma classe annima uma expresso. A sintaxe de uma expresso semelhante a invocao de um
construtor, a diferena que contm a definio de classe em um bloco de cdigo.
Considere a instancializao do objecto Consider the instantiation of the cumprimentarFrances:

AloMundo cumprimentarFrances = new AloMundo() {


String nome = "tout le monde";
public void cumprimentar() {
cumprimentarAlguem("tout le monde");
}

public void cumprimentarAlguem(String alguem) {


nome = alguem;
System.out.println("Salut " + nome);
}
};

A expresso de classe annima consiste no seguinte:


No operador new
O nome de uma interface a implementar ou uma classe a extender. No exemplo a classe a annima
implementa a interface AloMundo.
Parnteses que contm os argumentos para um construtor, assim como uma expresso normal de criao
de instncia de classe. Nota: Quando implementa-se uma interface, no h construtor, utiliza-se um par vazio
de parnteses, como neste exemplo.
Um corpo, que um corpo de declarao de classe. No corpo, tudo o que se pode fazer dentro de uma
classe.
Porque uma definio de classe annima uma expresso, que deve ser parte de uma Instruo. Neste
exemplo, a expresso classe annima parte da declarao que instancia o objecto

cumprimentarFrances.
Como classes locais, classes annimas tm acesso a variveis locais do escopo envolvente:
Uma classe annima tem acesso aos membros de sua classe delimitadora.
Uma classe annima no pode aceder variveis locais no seu mbito envolvente (mtodo) que no sejam
declaradas como final.
Como uma classe aninhada, uma declarao de um tipo (como uma varivel) em uma classe annima
sombreia quaisquer outras declaraes no mbito envolvente que tem o mesmo nome.
Classes annimas tambm tm as mesmas restries que as classes locais no que diz respeito aos
seus membros:
no se pode declarar inicializadores estticas ou interfaces membros em uma classe annima.
Uma classe annima pode ter membros estticos desde que sejam variveis constantes (final).

Pode-se declarar o seguinte em classes annimas:


Campos
mtodos extra (mesmo se eles no implementar quaisquer mtodos do supertipo)
Os inicializadores de instncia
classes locais
No entanto, no-se pode declarar construtores em uma classe annima.
Exemplos de classes annimas
As classes annimas so frequentemente utilizados em aplicaes de interface grfica do utilizador (GUI).

Das könnte Ihnen auch gefallen