ola! não sei se estou postando no lugar correto mas vamos la
bom eu gostaria de saber se é possível obter a classe que foi passada entre os sinais de maior e menos em uma class genérica
abaixo vai um exemplo para deixar mais claro
public class Exemplo<T> {
public Class<?> getClass(){
// return T.class; // sei que não é possível
//return Pessoa.class; //1: gostaria que a linha acima tivesse esse comportamento
return Carro.class; //2: ou esse dependendo da class que fosse informada
}
}
dai quando eu fisese isso
if(new Exemplo<Pessoa>).getClass() == Pessoa.class) System .out.println("verdade");
//ou isso
if(new Exemplo<Carro>).getClass() == Carro.class) System .out.println("verdade");
em ambos imprimir verdade
entenderão?
qualquer ajuda sera bem vinda!
até
Você pode usar o instanceof
Carro carro=new Carro():
if(carro instaceof Carro){
//codigo
}
if(carro instaceof Nave){
//não vai executar por que carro é instanciado da classe Carro
}
[quote=otaviojava]Você pode usar o instanceof
Carro carro=new Carro():
if(carro instaceof Carro){
//codigo
}
if(carro instaceof Nave){
//não vai executar por que carro é instanciado da classe Carro
}
[/quote]
bem obrigado pela resposta mas não foi bem essa a minha pergunta
eu quero um jeito de saber qual a class que foi informada na hora de instanciar a class generica um geito de ter aceso a class que foi colocada no meio dos <>
mas lendo esse post no blog caelum percebi que é impossível devido os generics só serem usados pelos compiladores o que é uma pena pois agora vou ter que passar pelo construtor a class no meu DAO generico
Infelizmente nao é possivel:
O caso que o codigo do Salgado funciona é apenas se a sua propria classe exemplo estende ou implementa alguma classe/interface generica e especifica o tipo na declaracao da classe.