java中对于泛型的理解(复习笔记)
一、泛型是什么?
泛型,即“参数化类型”,泛型用来指定各种数据类型
泛型只能是引用数据类型 eg:integer string 而不能是基本数据类型 eg int float
代码如下(示例):
public class FanXing {
public static void main(String[] args) {
//编译即报错 因为类型在编译期间已被确定为String 无法接收int
Person<String> person1 = new Person<String>("10");
person1.show(); //class java.lang.String
Person<Integer> person2 = new Person<Integer>(10);
person2.show(); //class java.lang.Integer
}
}
class Person<E> {
E s;//E表示s的数据类型, 该数据类型在定义 Person 对象的时候指定,即在编译期间,就确定E是什么类型
public Person(E s) {
//E 也可以是参数类型
this.s = s;
}
public E f() {
//返回类型使用 E
return s;
}
public void show() {
System.out.println(s.getClass());//显示 s 的运行类型
}
}
//在给泛型指定具体类型后,可以传入该类型或者该类的子类类型
//编译类型是左边的,运行类型是右边的,所以泛型可以省略右边的内容<>
Person<String> person1 = new Person<>("10");
//4. 如果是这样写 泛型默认是 Object 因为Object是所有类型的超类
ArrayList arrayList = new ArrayList();//等价
ArrayList<Object> arrayList = new ArrayList<Object>();