Eu já falei de classe anônima em algum post mais antigo... Geralmente, a gente implementa uma interface ou "herda" uma classe abstrata com a classe anônima e (também) implementa seus métodos. Mas, como seria se, por necessidade, eu quisesse incluir uma nova função em um objeto de uma classe já implementada?
Pois é, dá para fazer isso com o uso da mesma técnica:
import java.util.*;
import java.io.*;
public class Teste {
//Método principal
public static void main(String[] args) throws Exception {
Object objeto = new Object() {
//Propriedade privada
private String helloWorld = "Hello World";
//Método público
public String talk() {
return helloWorld;
}
//Método público que existe na classe Object
public String toString() {
return helloWorld;
}
};
//Chamando o método toString da classe Object e exibindo seu resultado
System.out.println(objeto.toString());
//Chamando o método que não existe na classe Object mas que existe na "classe anônima"
String ret = objeto.getClass().getDeclaredMethod("talk").invoke(objeto).toString();
//Exibindo o resultado
System.out.println(ret);
}
}
Loucura, não? :P
Até mais!
Nenhum comentário:
Postar um comentário