标签:
publicclassContainer<K, V>{ private K key; private V value; publicContainer(K k, V v){ key = k; value = v; } public K getKey(){ return key; } publicvoid setKey(K key){ this.key = key; } public V getValue(){ return value; } publicvoid setValue(V value){ this.value = value; }}publicclass A extends Apple<T> //错误publicclass A extends Apple<String>//正确,把Apple<T>中的T当作String处理publicclass A extends Apple //可以,但泛型检查有警告:未检查或不安全的操作,Apple<T>中的T当作Object处理interface Info<T>{ // 在接口上定义泛型 public T getVar();// 定义抽象方法,抽象方法的返回值就是泛型类型 } classInfoImpl<T> implements Info<T>{ // 定义泛型接口的子类 private T var ; // 定义属性 publicInfoImpl(T var){ // 通过构造方法设置属性内容 this.setVar(var); } publicvoid setVar(T var){ this.var = var ; } public T getVar(){ returnthis.var ; } }; publicclassGenericsDemo24{ publicstaticvoid main(String arsg[]){ Info<String> i = null; // 声明接口对象 i =newInfoImpl<String>("李兴华");// 通过子类实例化对象 System.out.println("内容:"+ i.getVar()); } }; interface Info<T>{ // 在接口上定义泛型 public T getVar();// 定义抽象方法,抽象方法的返回值就是泛型类型 } classInfoImpl implements Info<String>{ // 定义泛型接口的子类 privateString var ; // 定义属性 publicInfoImpl(String var){ // 通过构造方法设置属性内容 this.setVar(var); } publicvoid setVar(String var){ this.var = var ; } publicString getVar(){ returnthis.var ; } }; publicclassGenericsDemo25{ publicstaticvoid main(String arsg[]){ Info i = null; // 声明接口对象 i =newInfoImpl("李兴华"); // 通过子类实例化对象 System.out.println("内容:"+ i.getVar()); } }; classDemo{ public<T> T fun(T t){ // 可以接收任意类型的数据 return t ; // 直接把参数返回 } }; publicclassGenericsDemo26{ publicstaticvoid main(String args[]){ Demo d =newDemo(); // 实例化Demo对象 String str = d.fun("李兴华");// 传递字符串 int i = d.fun(30); // 传递数字,自动装箱 System.out.println(str); // 输出内容 System.out.println(i); // 输出内容 } }; publicclassGenericsDemo30{ publicstaticvoid main(String args[]){ Integer i[]= fun1(1,2,3,4,5,6); // 返回泛型数组 fun2(i); } publicstatic<T> T[] fun1(T...arg){ // 接收可变参数 return arg ; // 返回泛型数组 } publicstatic<T>void fun2(T param[]){ // 输出 System.out.print("接收泛型数组:"); for(T t:param){ System.out.print(t +"、"); } } }; Class c1 =newArrayList<Integer>().getClass();Class c2 =newArrayList<String>().getClass();System.out.println(c1 == c2); /* Outputtrue*/

publicclassMain<T>{ public T[] makeArray(){ // error: Type parameter ‘T‘ cannot be instantiated directly returnnew T[5]; }}publicclassMain<T>{ public T[] create(Class<T> type){ return(T[])Array.newInstance(type,10); } publicstaticvoid main(String[] args){ Main<String> m =newMain<String>(); String[] strings = m.create(String.class); }}publicvoid inspect(List<Object>list){ for(Object obj :list){ System.out.println(obj); } list.add(1);//这个操作在当前方法的上下文是合法的。 }publicvoid test(){ List<String> strs =newArrayList<String>(); inspect(strs);//编译错误} 

标签:
原文地址:http://www.cnblogs.com/Doing-what-I-love/p/5664472.html