一.泛型
1.泛型机制是一种把数据类型明确推迟到创建对象或者调用方法时才去明确的一种机制
2泛型的语法格式:<数据类型,数据类型>,注意:泛型中的类型必须是引用类型
3.泛型只在编译期有效,在运行期间就擦除了
4.泛型的好处:
(1)把问题提前到了编译期
(2)避免了向下转型
5.泛型可以定义在接口,类,方法上面
(1)泛型定义在类上面
public class Teacher<T> {
T name;
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
}
(2)泛型定义在接口上
public interface MyInterface<A,B> {
public abstract B show(A a);
} A为传入的类型,B为返回的类型,a为传入的参数
(3)泛型定义在方法上
public <T> void show(T t) {
System.out.println(t);
}T为传入的类型,t为传入的参数
6.泛型通配符
向上限定 右边的泛型只能是他的本身,或者他的父类
Animal<? super Animal> animal = new Animal<Object>();
向下限定 右边的泛型只能是他的本身,或者他的子类
Animal<? extends Animal> animal2 = new Animal<Dog>();
二.增强for循环
1.格式:
for(容器中的数据类型 元素变量名:容器名){
输出:元素变量名
}
2.可变参数格式:
可变参数 数据类型... 变量名
private static int addMthod(int... a)
可变参数实质上是一个数组