什么是泛型

泛型的本质就是类型参数化,也就是将数据的类型作为参数。

泛型的使用

在类、接口、方法时使用类型传参,当使用时指定具体的类型。
所有使用该泛型的地方都被统一化,保证类型一致。如果未指定具体类型,默认是Object类型。集合中的所有类都增加了泛型,泛型也主要用在集合中

泛型的优点:

  • 不用强制转换类型了
  • 编码更加安全(从编译阶段就避免了类型问题)
  • 可见性强,不用猜数据的类型

泛型代码实践

泛型类

public class GenericClass<T> {
    private T obj;

    public T getObj() {
        return obj;
    }

    public void setObj(T obj) {
        this.obj = obj;
    }
}

@Test
public void test1() {
    // 创建对象并指定类型
    GenericClass<String> genericClass = new GenericClass<>();
    genericClass.setObj("simple");
    System.out.println("T:String :" + genericClass.getObj());

    // 创建对象并指定类型
    GenericClass<Integer> genericClass1 = new GenericClass<>();
    // 传入String类型,编译器就会报错(更加安全)
    // genericClass1.setObj("simple");
    genericClass1.setObj(11);
    System.out.println("T:Integer :" + genericClass1.getObj());

输出:
T:String :simple
T:Integer :11
}

泛型方法

public class GenericMethod {

    // 泛型方法语法,使用前需要先声明<T>
    public static <T> void show(T t) {
        System.out.println(t);
    }
}

@Test
public void test4() {
    GenericMethod.show("hello");
    GenericMethod.show(18);
    GenericMethod.show(22.5);
}

输出:
hello
18
22.5