2.泛型
2.1泛型概述
- 泛型:是JDK5中引入的特性它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
- 参数化类型,就是将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型,这种参数可以用在类,方法和接口中,分别被称为泛型类,泛型方法和泛型接口。
- 泛型的好处:
- 把运行时期的问题提前到了编译期
- 避免了强制类型转换可能带来的问题
2.2泛型类 泛型方法 泛型接口
泛型类的定义格式
- 格式:修饰符 class 类名<类型>{}
泛型方法的定义格式
- 格式:修饰符 <类型>返回值类型 方法名(类型 变量名){}
泛型接口的定义格式
- 格式:修饰符 interface 接口名<类型>{}
2.3类型通配符
为了表示各种泛型Lsit的父类,可以使用类型通配符
- 类型通配符<?>
- List<?>:表示元素类型未知的List,它的元素可以匹配任何类型
- 这种带通配符的List仅表示它是各种泛型LIst的父类,并不能把元素添加到其中
- 如果说我们不希望List<?>是任何泛型List的父类,只希望它代表某一泛型List的父类,可以使用类型通配符的上限
- 类型通配符上限<? extends 类型>
- List<? extends Number>:它表示的类型是Number或者其子类型
- 类型通配符下限<? super 类型>
- List<? super Number>:它表示的类型是Number或者其父类型
2.4可变参数
- 格式:修饰符 返回值类型 方法名(数据类型…变量名){}
- 注意事项
- 这里的变量其实是一个数组
- 如果一个方法有多个参数,包含可变参数,可变参数要放在最后
2.5可变参数的使用
Arrays工具类中有一个静态方法:
- public static List asList(T…a):返回由指定数组支持的固定大小列表
- 不允许执行添加(add)方法和删除(remove)方法,但允许修改(set)方法。
List接口中有一个静态方法:
- public static List of(E…elements):返回包含任意数量元素的不可变列表
- 不允许执行添加(add)方法,删除(remove)方法和修改(set)方法
Set接口中有一个静态方法:
- public static Set of(E…elements):返回一个包含任意数量元素的不可变集合
- 不允许执行添加(add)方法,删除(remove)方法,同时也不允许有重复元素,也没有修改方法。