qualquer classe que passar no teste É-UM é valido por exemplo: Você pode passar ali: Integer, Double, porém não pode passar um Object, String ja que essas classes não passa no teste É-UM para a class Number.
E nesse caso quando você usa é que você vai usar o tipo genericos dentro no método, normalmente é quando você nao declara na class.
import java.util.*;
class MetGen{
public<T> void make(T t){
List<T> li = new ArrayList<T>();
li.add(t);
System.out.println(li);
}
public static void main(String agrs[]){
List<Integer> la = new ArrayList();
la.add(10);
MetGen g = new MetGen();
g.make(la);
}}
Uma coisa que fiz aqui no trabalho e pode ser um exemplo legal tambem. Eu tinha um Map “não generico” e precisava retornar um objeto daquele map. Para facilitar o meu lado e evitar erros de cast, decidi passar o tipo do objeto esperado no metodo tambem para que ele me retornasse o objeto convertido. O resultado ficou mais ou menos assim:
public <T> T get(Class<T> clazz, String key) {
Object o = map.get(key);
if (o instanceof T)
return (T) o;
return null;
}
Ow LPJava eu fiz assim aqui em casa no eclipse e ele não de pau nenhum cara ou eu não to entendendo ou não sei mais nada tipo olah só …
[code]public void testar3(List array){
}[/code]
A minha duvida é a seguinte por que ali no argumente de List<String> o compilador permitiu que eu colocasse um tipo parametrizado String, sendo que String não passa no teste É UM de Number…
cara seu argumento do metodo no minimo nao tem nada ver com genericos… se vc definir que seu argumento é String e nao tem nada ver com o tipo generico que vc passou antes do void… o que acontece com generico?
aonde tem a variavel (T ou E, ou outra qualquer) ele vai substituir com o tipo… o exemplo afsrj reflete nisso que falei