概念
使用泛型的好处
不使用泛型可以在集合中存储任意类型的数据,但是不安全可能会引发异常
package Fanxing;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class FanXingMain {
public static void main(String[] args) {
method2();
method1();
}
private static void method2() {
Collection<String> list = new ArrayList<>();
list.add("zhang");
list.add("hang");
for (String s : list) {
System.out.println(s+"长度->"+s.length());
}
}
private static void method1() {
Collection coll = new ArrayList();
coll.add("zhang");
coll.add(1);
Iterator it = coll.iterator();
while (it.hasNext()){
Object obj = it.next();
System.out.println(obj);
// 因为没有使用泛型那么就可以存任意数据类型 不一定都是字符串类型 所以运行出错
// ClassCastException 类型转换异常
String str = (String)obj;
System.out.println(str.length());
}
}
}
定义使用含有泛型的类
定义使用含有泛型的方法
定义使用含有泛型的接口
使用
泛型通配符
https://www.bilibili.com/video/av55246614/?p=243 视频中还讲了泛型的上限限定与下限限定 暂不更
import java.util.ArrayList;
import java.util.Iterator;
public class MethodMain {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
ArrayList<String> list2 = new ArrayList<>();
list2.add("jing");
list2.add("hang");
printArray(list1);
System.out.println("===========");
printArray(list2);
}
public static void printArray(ArrayList<?> list) { // 这里其实也可是不指定泛型 直接 ArrayList list
Iterator<?> it = list.iterator();
while (it.hasNext()){
System.out.println(it.next()); // Object类型
}
/*for (Object o : list) {
System.out.println(o);
}*/
}
}