【Java笔记】java泛型
Java泛型
泛型:是一种未知的数据类型,当我们不知道使用什么类型的数据的时候,可以使用泛型
泛型也可以看成是一个变量,用来接受数据类型
ArrayList在定义的时候,不知道集合中都会存储什么类型的数据,所以使用泛型
E: 未知的数据类型
创建集合对象的时候,就会确定泛型的数据类型
使用泛型的优缺点
创建集合对象,不使用泛型
好处:集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据
弊端:不安全,会引发异常
创建集合对象,使用泛型
好处:
- 避免了类型转换的麻烦,存储的使什么类型,取出的就是什么类型
- 把运行期异常,提升到了编译期
弊端:
泛型使什么类型,只能存储什么类型的数据
泛型的定义与使用
含有泛型的类
创建对象的时候确定泛型的数据类型
public class GenericClass<E> {
private E name;
public E getName() {
return name;
}
public void setName(E name) {
this.name = name;
}
}
public static void main(String[] args) {
GenericClass<Integer> gc = new GenericClass<>();
gc.setName(2334);
}
}
含有泛型的方法
在调用方法的时候确定泛型的数据类型
public <M> void nethod(M m){
//方法体
}
泛型通配符
当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身的方法无法使用。
public static void printArray(ArrayList<?> list){
//使用迭代器遍历集合
Iterator<?> it = list.iterator();
while(it.hasNext()){
Object o = it.next;
System.out.println(o);
}
}