Vamos lá.
[code]Class clazz = Class.forName(className);
// cria o objeto solicitado
Object object = clazz.newInstance();
// obtém e executa o método getDesc
Method method = clazz.getMethod(“getDesc”, null);
List desc = (List) method.invoke(object, null);[/code]
Através do método Class.forName você pode obter uma metaclasse a partir do nome da classe contido numa String. O método newInstance executa o construtor e retorna uma nova instância como Object (não há como saber a priori que classe será criada).
O método getMethod obtém o método desejado e Method.invoke executa este método no objeto passado como parâmetro.
Abaixo, a implementação completa:
[code]import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class TesteReflection
{
public static void main(String args[])
{
String className = JOptionPane.showInputDialog(null, "Digite o nome da classe: ");
try
{
Class clazz = Class.forName(className);
// cria o objeto solicitado
Object object = clazz.newInstance();
// obtém e executa o método getDesc
Method method = clazz.getMethod("getDesc", null);
List desc = (List) method.invoke(object, null);
for (Object o: desc)
System.out.println(o);
}
catch (Exception e)
{
e.printStackTrace(System.err);
}
}
}
class Pessoa {
public Pessoa() {
};
public List getDesc() {
List desc = new ArrayList();
desc.add("O nome dessa classe é Pessoa ");
desc.add("Essa é uma classe criado por Bruno");
desc.add("Tem como Objetivo .... ");
desc
.add("Possui alguns atributos, entre eles o Id da Pessoa e o Nome da Pessoa");
return desc;
};
}
class Evento {
public Evento() {
};
public List getDesc() {
List desc = new ArrayList();
desc.add("O nome dessa classe é Evento ");
desc.add("Essa é uma classe tem como finalidade mapear a tabela de Eventos");
desc.add("Possui alguns atributos, entre eles o Id do Evento e o Nome do Evento");
desc.add("Outro atributo de extrema importância é a data do Evento .. pois ela define ... ");
return desc;
}
}[/code]
Espero ter ajudado. Vale a pena estudar metaprogramação, é útil em diversas situações. Só tome cuidado pra não viciar. 