[quote=ruben_m]Saudações pessoal
Gostava de saber se existe alguma forma de ter atributos de uma determinada classe que não sei qual é, mas que será passada através de um parâmetro diamond
por exemplo:
[code]public class NewClass {
public void receberLista(List<T> lista){
}
}[/code]
O que quero saber é se tem como eu obter os atributos/métodos que estão definidos no interior da minha classe, se eu passar por exemplo uma classe pessoa no parâmetro eu poder por exemplo fazer
lista.get(0).getNome
ou uma coisa assim, se por exemplo passar String, poder ver um método como lenght
Ou seja quero uma maneira Genérica de poder fazer isso, se alguém já fez ou tem ideia de como se faça peço para que me ajude
[/quote]
O que vc quer é ler o tipo genérico T. Do jeito que vc em o codigo não tem como porque o java apaga o tipo quando compila. É o conceito de erasure. Procure por generics erasure no google.
Mas existe uma forma. Só que a sua classe tem que herdar de outra, assim
[code]public class NewClass extends AbstractNewClass{
public void receberLista(List<T> lista){
}
}[/code]
Neste caso sim é possível saber qual é a classe T. Isto porque o erasure não se aplica onde ha herança. Ao usar o extends o compilador guarda a classe que está em T. então, ai pode usar o codigo do raf4ever para ler o T.
Uma outra opção, no caso de listas, é pegar o primeiro item da lista e ver qual é a sua classe. Ela terá que ser T
normalmente quem quer saber desta técnica é para usar para criar DAO genéricos. Se é isso que está tentando fazer, não faça. Não crie DAO generico que é uma péssima ideia.