一、类型通配符
为了表示各种泛型 List 的父类,可以使用类型通配符:
- 类型通配符:<?>
- List<?>:表示元素类型未知的 List ,它的元素可以匹配任何的类型;
- 这种带通配符的 List 仅表示它是各种泛型 List 的父类,并不能添加元素;
如果说我们不希望 List<?> 是任何泛型的父类,只希望它代表某一泛型 List 的父类,可以使用类型通配符的上限:
- 类型通配符上限:<? extends 类型>
- List<? extends Number>:它表示的类型是 Number 或者其子类型;
除了可以指定类型通配符的上限,我们也可以指定类型通配符的下限:
- 类型通配符:<? super 类型>
- List<? super Number>:它表示的类型是 Number 或者其父类型;
二、可变参数
1.1 基本用法
可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了;
- 格式:修饰符 返回值类型 方法名(数据类型…变量名){ }
- 范例:public static int sum(int…a){ }
注意事项:
- 这里的变量其实是一个数组;
- 如果一个方法有多个参数,包含可变参数,可变参数要放在最后;
1.2 扩展
Arrays 工具类中有一个静态方法:
- public static List asList(T…a):返回由指定数组支持的固定大小的列表;
- 返回的集合不能做增删操做,可以做修改操作;
List 接口中有一个静态方法:
- public static List of(E…elements):返回包含任意数量元素的不可变列表;
- 返回的集合不能做增删改操作;
Set 接口中有一个静态方法:
- public static Set of(E…elements):返回一个包含任意数量元素的不可变集合;
- 再给元素的时候,不能给重复的元素;
- 返回的集合不能做增删改操作,没有修改的方法;