Descobrir qual classe e instancia-la

Boa tarde Galera !!! :smiley:

Não sei se da e nem como fazer isso.
O problema é o seguinte.

Preciso fazer uma classe para comparar determinado atributo de um determinado objeto, pois tenho um List que contém N objetos e preciso ordenar a List pelo tal atributo.

Procurei aqui no GUJ e encontrei o Post http://www.guj.com.br/posts/list/20989.java que é justamente o que eu precisava, porém preciso deixá-lo mais genérico.

Pois bem … Com base nesse exemplo do Post citado, vejamos o método a seguir:

     public int compare(Object o1, Object o2) {
         Presidente p1 = (Presidente) o1;
         Presidente p2 = (Presidente) o2;
         if (crescente) {
             return p1.inicio < p2.inicio ? -1 : (p1.inicio > p2.inicio ? +1 : 0);
         } else {
             return p1.inicio < p2.inicio ? +1 : (p1.inicio > p2.inicio ? -1 : 0);
         }
     }

O que eu gostaria de fazer é de passar um Objeto qualquer, e o nome(String) do atriuto que eu gostaria de comparar.
Dai, descobrir qual classe é o objeto que eu passei e verificar se o atributo existe no tal objeto passado e dai sim fazer o p1.inicio < p2.inicio.

Por exemplo:

    public int compare(Object obj1, String atributoObj1, Object obj2, String atributoObj2){
        // Descobrir qual o obj1
        // Verificar se o atributoObj1 existe em obj1
        // Idem ao obj2
        
        //Entaum fazer ..
        return obj1.atributoObj1 < obj2.atributoObj2 ? -1 ...
    }

É possível ???

:smiley: Obrigado Galera !! :smiley:

Dê uma lida em:
The Reflection API

Tem tudo o que você quer. :wink:

ps.: off-topic? Isso não seria Java Básico (ou avançado) ?

[]'s

Se você é chegado em geração de código pode tentar usar o BCEL ( http://jakarta.apache.org/bcel ) ou outro gerador de bytecodes (como o ASM, http://asm.objectweb.org/ , que é usado pelo Groovy ) e gerar o seu “Comparator”.
Eu fiz uma classe usando o BCEL que gera um “Comparator” dada uma classe e os campos que se quer comparar (e com a ordem ascendente ou descendente), mas infelizmente foi para um projeto comercial, cujo código não posso postar. O “Comparator” gerado é tão rápido quanto o código feito no braço. (Usar “reflection” é legal, mas se você precisa ordenar mais que 200000 elementos aí a coisa começa a pegar.)