泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
举个简单的例子,咱们创建一个值是Long型的map,那么Map<String,Long> thisMap =new HashMap<>();当给这个map里的值赋值其他类型时会报错,他只能赋值Long型。
泛型的好处有哪些:
1:类型安全,例如上边的map例子,能够控制咱们需要的类型
2:消除强制类型转换,这个意思是指,继续用map做例子:map不指定泛型具体类型,键值对中的值默认是Object类型的,无论你取到什么类型的值,都要做类型转化
总结好处就是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率和性能。
例子:
List<User> userList =new ArrayList<>();
//TODO,要判断list是否为null
for(User user:userList){
String userName =user.getUserName();
Integer age =user.getAge();
//…………
}
注意事项:
1、泛型的类型参数只能是对象类型,不能是基本数据类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(Java.lang.String);
泛 型还有接口、方法等等