什么是泛型
泛型的本质就是类型参数化,也就是将数据的类型作为参数。
泛型的使用
在类、接口、方法时使用类型传参,当使用时指定具体的类型。
所有使用该泛型的地方都被统一化,保证类型一致。如果未指定具体类型,默认是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