一种特殊情况下需要使用<?> 而不是原生类型,如果需要想一个使用<?>的方法传递原生类型,那么对编译器来说,可能会推断出实际的类型参数,使得这个方法可以回转并调用另一个使用这个确切类型的方法。
static void f2(Holer<?> holder){
f1(holder);//call with captured type
}
Holer raw=new Holder<Integer>(1);
Holder rawbasic=new Holder;
f1(raw);warn
f2(raw);ok
f1(raw);warn
f2(raw);0k