java基础系列之泛型

时间:2023-02-16 12:11:16

     泛型   

           1、什么是泛型?

                                       泛型是实现了参数化类型的概念,术语意思是:“适用于许多类型”。这种参数类型 可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
i、泛型类

                     java基础系列之泛型


 ii、泛型接口

                     java基础系列之泛型

    

      以上泛型类和泛型接口中,用尖括号加英文字母大写就是我们俗称的泛型。




2、定义泛型类

                           语法:类名<T>

                           说明 : 在定义泛型类时,一般类型名称使用T来表达,而容器的元素使用E来表达。


      3、泛型的常规用法

                  i、定义泛型类时,可以声明多个类型。语法:

                   MutiOverClass<T1,T2>
                   MutiOverClass:泛型类名称

                 ii、定义泛型类时声明数组类型,比如以下代码:

public class ArrayClass<T>{  //定义泛型类
       private T[] array; //定义泛型数组

       public T[] getArray(){  //获取学生数组
                return array;
}
        public void setArray(T[] array){  //设置set方法为学生赋值
               this.array = array;

}
         public static void main (String[] args){
            ArrayClass<String> a = new ArrayClass<String>();
            String[] array ={"学生1","学生2","学生3","学生4","学生5"};
            a.setArray(array); //条用set方法
        for(int i = 0;i < a.getArray().length;i++){
       System.out.println(a.getArray()[i]);         //调用getArray()方法返回数组中的值
}
}
}
运行结果如下:
     java基础系列之泛型


在此代码中定义泛型类时声明一个学生数组,数组的类型为泛型,然后在泛型类中相应的设置set()和get()方法。虽说可以用泛型来声明一个数组,但是不可以使用泛型来建立数组的实例,下面的代码就是错误的:


java基础系列之泛型

这里会报一个Cannot create a generic array of T(不能创建一个泛型数组)这样的错,由此可见,泛型不能直接建立数组。



4、泛型的高级用法

                 i)、继承泛型类与实现泛型接口

                          a、 创建一个类文件,在该类中继承泛型类 :                    

public class ExtendClass<T1>{
}
class SonClass<T1,T2,T3> extends ExtendClass<T1>{
}

                               在此要说明泛型可以比父类多,但是绝不可以比父类少


                          b、 创建一个类文件,在该类中实现泛型接口 :  

interface TestInterface<T1>{

}
class SonClass2<T1,T2,T3> implements TsetInterface<T1>{
}

       5、泛型总结

                        1、泛型的类型参数不可以是基本类型

                        2、 泛型的类型个数可以是多个

                        3、 定义的泛型接口也可以被实现

                        4、 不能直接用泛型来创建数组