[quote=tabocu]Boa tarde galera!
Estou com uma dificudade com tipos génericos!
Esse código mostra bem o que quero fazer:
public class UmaClasse <tipo>{
tipo variavel;
public tipo funçãoQueSoma(tipo a,tipo b){
if(tipo == float || tipo == double){
return a+b;
}else{
throw new IllegalArgumentException("Operação invalida pra esse tipo de argumento");
}
}
}
porem nao aceita as operações aritmética sem definir o tipo
alguem tem alguma ideia?[/quote]
Olá,
comecei a pouco com Java, mais ja me acostumei com algumas coisinhas, eu vou dar a minha opinião se o pessoal ver que ta errado por favor me perdoem
não sei se é isso que você realmente quer, mais praticamente um tipo (um Object) em java pode ser qualquer coisa, por isso você não consegue fazer operações aritiméticas sem saber exatamente o tipo, eu sugiro então que use a classe Number pai de todos os Wrappers em Java exceto por Boolean *se eu nao me engano,
por exemplo Todas as classes herdam de Object, porém Number tem como filhas as classes Wrappers, que representam numeros.
vou mudar o seu código e vc vê se serviu pro seu caso…
public class UmaClasse { //não preciso de Generics aqui
public Number funçãoQueSoma(Number a, Number b){
return a + b;
}
}
graças ao Autoboxing você consegue colocar uma variavel primitiva no parametro do seu metodo,
qualquer duvida so avisar, abraços
*correção Number é uma interface e por isso não tem o metodo toString() sobrescrito,
fiz uns testes e mudei para
public Number funçãoQueSoma(Number a, Number b){
return a.intValue() + b.intValue();
}