jdk5.0泛型

泛型

泛型的应用场景

泛型一般使用在集合上,使用了泛型的集合,这集合的所装载的元素类型就会确定下来;就好比缸是个集合,为了让这个缸只能装米, 就给这口缸贴上一个【米】,不允许这口缸来装其他的东西。我们有个List集合想让他只能放String类型元素,我们就给这个List添加String泛型,例如:List<String>

不使用泛型时的遇到的问题

public class YouXin01 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new A());
        list.add(new B());
        // 取出的是Object对象,不能调用A对象里的方法
        System.out.println(list.get(0));
    }
}
class A {
    public void test() {
        System.out.println("这是A");
    }
}
class B {
    public void test() {
        System.out.println("这是B");
    }
}

使用泛型情况

List<A> list = new ArrayList<A>();
list.add(new A());
list.get(0).test();                     //这时就可以调用了

泛型注意的地方

泛型里面写的是一个对象,不能写基本的数据类型,比如int要使用Integer。

泛型的使用

泛型使用在方法上

public class YouXin02 {
    public static void main(String[] args) {
        Integer[] arr3 = {10, 11, 12, 13, 14};
        swap(arr3, 1, 3);
        System.out.println(Arrays.toString(arr3));
        //结果: 10, 13, 12, 11, 14
    }

    /**
     * 使用泛型方法
     * 需要定义一个类型使用大写字母表示T: 这个T表示任意的类型
     * 写在返回值之前
     * ======表示定义了一个类型,这个类型是T
     * 那这样在方法里就可以使用这个类型T了
     */
    public static <T> void swap(T[] arr,int a,int b) {
   T temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } }

泛型在类上的使用

public class YouXin03<T> { //直接在类名后定义 T aa; //在类里面可以直接使用T的类型 public void test11(T bb) {} //使用泛型类 /* * 注意: 这是错的,静态方法里是不能使用泛型的 * 在类上面定义的泛型,不能在静态方法里面使用 */ //public static void test12(T cc) {} }

原文地址:https://www.cnblogs.com/paoge/p/13571215.html