quinta-feira, 13 de setembro de 2018

Dicas de programação: Criando e chamando métodos de um "objeto anônimo" em Java

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: