不使用泛型可以在集合中存储任意类型的数据,但是不安全可能会引发异常
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); }*/ } }