泛型学习

来源:互联网 发布:js done 编辑:程序博客网 时间:2024/05/19 01:31

最近在抽取代码,对泛型还不太了解,所以进行泛型的学习


泛型是 jdk1.5出现的新特性

泛型的集合写法

为什么需要泛型?
1.将运行时的问题提前至编译时
2.避免了无畏的强制类型转换

注意:泛型没有多态的概念,左右两边的数据类型必须一致或者是只写一边(只写一边是为了兼容低版本的jdk写法)

需求:定义一个方法可以传入任意类型的参数,要求方法的返回值类型
-----自定义泛型:
自定义泛型就是一个数据类型的占位符,或者是一个数据类型的变量。

泛型里面不允许使用基本数据类型,如果要使用基本数据类型,就要使用基本数据类型对应的包装类型
int -------- Integer
char -------- Character

泛型类
数据类型 T 何时替换?
1.在使用该类创建对象的时候确定的 T 的类型
2.如果不指定泛型的具体数据类型,那么泛型默认的数据类型为object
3.静态方法不能使用类上自定义泛型,如果静态方法需要使用自定义泛型必须在方法上自己声明使用

泛型接口
1.接口上的自定义泛型的具体数据类型是在实现该接口的时候指定的
2.如果实现接口时不指定泛型的具体数据类型,那么泛型默认的数据类型为object
3.如果不在实现接口的时候指定自定义泛型的具体类型,那么接口实现类要声明自定义泛型

泛型的上下限
1. ? : 泛型的通配符,可以匹配任意的数据类型
2.泛型的通配符一般不会单独使用,一般都会配合泛型的上下限去使用
3. ? super Interger ,------具体类型可以是Interger或者是Interger的父类,这称为泛型的下限
4. ? extends Number -----具体类型可以是Number或者是Number的子类,这称为泛型的上限

1 0
原创粉丝点击