[RESOLVIDO] Reflection e métodos

Pessoal,

To com uma dúvida brava aqui, hehehe.

Eu tenho uma classe e nessa classe eu tenho o atributo private List<Pessoa> pessoas por exemplo.
Usando reflection, eu consigo percorrer os métodos e pegar o getPessoas().
Bem, minha dúvida é, através de reflection, eu consigo ver que o tipo de retorno do getPessoas() é um java.util.List,
mas como eu faço pra saber se essa lista é realmente de "“Pessoa”? pq na minha classe vão ter mais de uma lista.

Preciso disso pq estou criando uma classe Util onde várias classes irão usar. Eu só tenho o class do objeto que popula a lista, não terei nem o nome do atribuito.
Minha idéia é percorrer os métodos get e verificar qual q possui um retorno do tipo java.util.List e que seja da classe que eu quero.

Abraços

package guj;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

class Pessoa {
}

class Carro {
}

class Aviao {
}

class ClasseComVariosMetodos {
    public List<Pessoa> getPessoas() {
        return new ArrayList<Pessoa>();
    }

    public List<Carro> getCarros() {
        return new ArrayList<Carro>();
    }

    public LinkedList<Aviao> getAvioes() {
        return new LinkedList<Aviao>();
    }

    public String getNome() {
        return "ClasseComVariosMetodos";
    }
}

public class TesteReflectionGenerics {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        Class<?> klass = ClasseComVariosMetodos.class;
        // Imprime:
        // java.util.List<guj.Pessoa>
        // java.util.List<guj.Carro>
        // java.util.LinkedList<guj.Aviao>
        // class java.lang.String
        for (Method method : klass.getDeclaredMethods()) {
            System.out.println(method.getGenericReturnType());
        }
        System.out.println();
        // Imprime:
        // class guj.Pessoa
        // class guj.Carro
        // class guj.Aviao
        for (Method method : klass.getDeclaredMethods()) {
            if (List.class.isAssignableFrom(method.getReturnType())) {
                Type[] typeArguments = ((ParameterizedType) method.getGenericReturnType()).getActualTypeArguments();
                System.out.println(typeArguments[0]);
            }
        }
    }
}

Era isso mesmo que eu estava precisando.

vlwww entanglement