publicclassFirstTuple <A,B>{ privatefinal A a; privatefinal B b; publicFirstTuple(A a,B b){ this.a=a; this.b=b; } public A getA(){ return a; } public B getB(){ return b; } public String toString(){ return"A:"+a+" B:"+b; } }
publicclassSecondTuple<A ,B,C> extendsFirstTuple<A,B>{ privatefinal A a; privatefinal B b; privatefinal C c; publicSecondTuple(A a,B b,C c){ super(a,b); this.a=a; this.b=b; this.c=c; } public A getA(){ return a; } public B getB(){ return b; } public C getC(){ return c; } public String toString(){ return"A:"+a+" B:"+b+" C:"+c; } }
public class TUtil{ public static <k,V> Map<K,V> map(){ Map<K,V> map=new HashMap<K,V>(); } public static final void main(String...args){ Map<String,String> maper=TUtil.map(); } }
泛型方法中的可变参数
1 2 3 4 5 6 7
public class Ter{ public <T> void t(T...args){ for(T a:args){
class To{ public void f(){} } class Ter <T>{ public T t; public Ter(T t){ this.t=t; } public void fer(){ //Erro:cannot find symbol t.tf(); } } public class TerT{ public static final void main(String...args){ To to=new To(); Ter ter<To> ter=new Ter(to); ter.fer(); } }
由于To被擦除了类型,所以无法找到方法tf
解决方法
1 2 3 4 5 6 7 8 9 10
class Ter <T extends To>{ public T t; public Ter(T t){ this.t=t; } public void fer(){ //Erro:cannot find symbol t.tf(); } }
v1.5.2