1 泛型
(1)将类型由原来的具体的类型参数化,在使用或调用时传入具体的类型。
(2)泛型的好处
把运行时的问题提前到编译时
避免了强制类型转换
2 泛型类
格式:修饰符 class 类名<类型>{}
如:public class Generic<T>{}
此处T可以为任意标识,常见的如T、E、K、V等常用于标识泛型
3 泛型方法
格式:修饰符 <类型> 返回值类型 方法名(类型 变量名){}
如:public <T> void show(T t){}
4 泛型接口
格式:修饰符 interface 接口名<类型>{}
范例:public interface Generic<T>{}
5 类型通配符<?>
(1)List<?>:表示元素类型未知的List,它的元素可以匹配任何的类型
(2)可以指定类型通配符的上限、下限
List<? extends Number>:表示的类型是Number或其子类型
List<? super Number>:表示的类型是Number或其父类型
6 可变参数
可变参数用作方法的形参,方法的参数个数就是可变的
格式:修饰符 返回值类型 方法名(数据类型...变量名)
如果一个方法有多个参数,包含可变参数,可变参数要放在所有参数的最后
示例:
public static void main(String[] args) {
evaluate("张三",5,7);
evaluate("李四",2,2,3,5);
evaluate("王五",3,1,5);
}
//普通参数不能放在可变参数后面
public static void evaluate(String name, int... scores) {
int sum = 0;
for (int i : scores) {
sum += i;
}
System.out.println(name + "的总评分为:" + sum);
}
7 集合类中的可变参数方法
(1)Arrays工具类
public static <T> List<T> asList(T...a):返回由指定数组支持的固定大小的列表
返回的集合不能做增删操作,可以修改
(2)List接口
public static <E> List<E> of(E...emements):返回包含任意数量元素的不可变列表
返回的集合不能做增删改操作
(3)Set接口
public static <E> Set<E> of(E...emements):返回包含任意数量元素的不可变列表
返回的集合不能做增删改操作