Java泛型的总结

泛型可以用于接口、类、方法上。还有泛型通配符这个概念

泛型的好处:可以在编译时检查

1.用于方法中,指定该方法中的形参的类型。

语法:修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
注意:方法上定义了是什么 泛型变量 ,后面就只能用什么 泛型变量

package com.itheima.hw;

import java.util.Arrays;

/**
 * @author Pzi
 * @create 2022-09-27 9:57
 */
public class GenericArray {

    //  泛型方法,交换数组中两个索引位置的值
    public static <T> void swap(T[] arr, int index1, int index2) {
        T temp = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = temp;
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6};
        Integer newNums[] = Arrays.stream(arr).boxed().toArray(Integer[]::new);
        swap(newNums, 0,1);
    }

}

2.用于类上

修饰符 class 类名<代表泛型的变量> { }

3.用于接口上

修饰符 interface接口名<代表泛型的变量> { }

  • 如果某个类要实现某个泛型接口,但是该实现类也不确定类型,如下定义。子类实现了父类,但是不确定子类要传入的类型,这种情况。
public class MyImpl3<E> implements MyGenericInterface<E> {
    @Override
    public void add(E e) {

    }

    @Override
    public E getE() {
        return null;
    }
}
4.泛型通配符

可以用来指定传入类,它的类型的上限和下限
可以用来表示方法中形参的未知的类型
如:
public static void getElement(Collection<?> coll){}

类型名称 <? extends 类 > 对象名称
表示只能传入该类或者其子类

类型名称 <? super 类 > 对象名称
表示只能传入该类或其父类

posted @ 2022-09-27 10:23  pzistart  阅读(161)  评论(0编辑  收藏  举报