java泛型(4) 泛型方法

  1. 由于对于一个集合来说,Collection,Collection都不是List的子类,所以在将集合作为方法的参数的时候Collection并不但能说是Collection,Collection的父类从而替代这两个类型的集合,示例如下:
    package GenericMethod;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;
    
    public class GenericMethodTest {
    
        static void fromArrayToCollection(Object[] a, Collection c){
            for(Object o : a){
                c.add(o);
            }
        }
    
    
        public static void main(String args[]){
            String[] strArr = {"a", "b"};
            List strList = new ArrayList<>();
            GenericMethodTest.fromArrayToCollection(strArr, strList);
        }
    
    
    }
     在上面这个示例中,形参为Collection而实参为List,显而易见这个程序连编译都通不过。 
       
  2. 所以带有泛型的方法格式应该是这个是这个样子的:
    修饰符  返回值类型 方法名 (形参列表){
        方法体
    }

    具体的代码示例如下:

    //使用带有泛型的方法格式是
    // 修饰符 返回值类型  方法名(形参列表){   //如果只涉及到一种泛型的话就不用,和S
    //方法体
    //}
    //所以以上的方法应该改写为
    //static  void formArrayToCollection(T[] a, Collection c{
    //方法体
    //}
    
    
    package GenericMethod;
    
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class GenericMethodTestCorrect {
    
        static  void fromArrayToCollection(T[] a, Collection c){
            for(T o : a){
                c.add(o);
            }
        }
    
        public static void main(String args[]){
            Object[] oa = new Object[100];
            Collection co = new ArrayList<>();
            fromArrayToCollection(oa, co);
            String[] sa = new String[100];
            Collection cs = new ArrayList<>();
            fromArrayToCollection(sa,cs);
    
        }
    
    }
     

     

  3. 一下为不止一个泛型类型的示例

    package GenericMethod;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;
    
    public class ArgsTest {
    
    
         void test(List a, List b){
            for(int i=0; i void test2(Collection a, Collection b){
            for(T ele : a){
                b.add(ele);
            }
        }
    
        public static void main(String args[]){
    
            ArgsTest argsTest = new ArgsTest();
            List a = new ArrayList<>();
            List b = new ArrayList<>();
    
            a.add("ads");a.add("zxc");
            b.add(1);b.add(22);
    
            argsTest.test(a,b);
    
            Collection c = new ArrayList<>();
            Collection d = new ArrayList<>();
            argsTest.test2(d,c);
    
        }
    
    }
     

    这是我看李刚编著的《疯狂Java讲义》后总结出来的。

    你可能感兴趣的:(java)