Java 泛型
💎泛型意义:(最早)开发时,进行数据安全校验
Java 泛型(generics)是Java 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型。
众所周知,集合对象中存储的都是 Object 类型的对象,存储元素时,元素类型可以自动转换为 Object。当需要读取元素时则需要强制将 Object 类型转换成对应的子类型,这种操作是不安全的行为。使用泛型可以约束存入数据类型,提高数据的安全性。
泛型的本质是参数化类型,也就是所操作的数据类型被指定为一个参数。
- 泛型:是一种约束,可以在代码编译阶段对存储于集合的数据进行类型控制。
- 泛型擦除:泛型是提供给 javac 编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上。但编译器编译完带有泛形的 java 程序后,生成的 class 文件中将不再带有泛形信息,以此使程序运行效率不受到影响,这个过程称之为 “擦除”。
集合使用泛型后,集合中的数据只能存入泛型定义的类型。并且在操作的时候不需要类型转换。**注意:**泛型仅在编译中进行类型约束,在编译后的代码中没有泛型,底层还是类型转换的,也就是泛型擦除。
泛型除了在集合中使用外,还有三种常用的使用方式:泛型类,泛型接口和泛型方法。
- 泛型类
/*
1: 把泛型定义在类上
2: 类型变量定义在类上, 方法中也可以使用
*/
public class ObjectTool<T> {
private T obj;
public T getObj() {
return obj;
}
public void setObj(T obj) {
this.obj = obj;
}
- 泛型接口
//同泛型类类似
public interface Man<T>{
public T getMan();
}
- 泛型方法
// 定义泛型方法..
public <T> void show(T t) {
System.out.println(t);
}