7.7java泛型中的K,V,T,E,?,object的意思及其用法

K表示键,V表示值,T表示type类型,E表示enum枚举, 其实这四个都只是符号 ,都是表示泛型名称
   ? 表示不确定的类型 

   Object java中所有类的父类。

[java]  view plain  copy
  1. import java.util.ArrayList;    
  2. import java.util.HashMap;    
  3. import java.util.List;    
  4. import java.util.Map;    
  5. //T1,T2都是随便定义的东西,注意1:他们不会关联到其他类,只是在本类中通用,只是告诉我们new的时候要加入泛型    
  6. public class Test<T1, T2> {    
  7.     public static void main(String[] args) {    
  8.         System.out.println(new Test().getaa());    
  9.         new Test<String, String> ().getbb("");    
  10.         new Test().getcc(Test.class);    
  11.         //注意下6:面这个HashMap的括号里面不能是T,E,T1,T2等不确定的东西,但可以是?    
  12.         HashMap<Object, String> map = new HashMap<Object, String>();    
  13.         List<?> list = new ArrayList<String>();    
  14.     }    
  15.     
  16.     T2 getaa() {    
  17.         //注意2:T2将自动转型为String,这个不需要去担心    
  18.         return (T2) "few";    
  19.     
  20.     }    
  21.     
  22.     public <T> void getbb(T x) {    
  23.         //注意3:Class<T>前面缺少<T>将编译错误    
  24.         System.out.println(x.getClass().getName());    
  25.     }    
  26.     
  27.     public <T> Class<?>  getcc(Class<T> a) {    
  28.         //getcc前面的Class<T>前面缺少<T>将编译错误,注意4:Class<?>里面的问号可以换成T    
  29.         System.out.println(a.getClass().getName());    
  30.         //注意5:参数里面的Class<T>最大的好处是如果方法里面定义了泛型,可以自动获取类型值,比如如下的List<T>可以自动获取到a的类型,不必强调死    
  31.         List<T> aa=new ArrayList<T>();    
  32.         System.out.println(aa);    
  33.         return a;    
  34.     }    
  35. }    

猜你喜欢

转载自blog.csdn.net/qq_18048847/article/details/80434158