一.不带泛型的ArrayList
/*ArrayList使用泛型
好处1.将运行期可能出现的问题提前的到编译器,如ArrayList的泛型是String就只能存储String类型,存储别的类型就会报错
2.可以使用泛型中数据类型特有的方法:
坏处1.只能存储一种类型的数据
二.为什么使用泛型
看一段代码
private static void genericTest() {
List arrayList = new ArrayList();
arrayList.add("总有刁民想害朕");
arrayList.add(7);
for (int i = 0; i < arrayList.size(); i++) {
Object item = arrayList.get(i);
if (item instanceof String) {
String str = (String) item;
System.out.println("泛型测试 item = " + str);
}else if (item instanceof Integer)
{
String str = (String) item;
System.out.println("泛型测试 item = " + inte);
}
}
}
//补充知识
1.集合只能存储引用类型,不能存储基本类型;在实际操作中基本类型会进行自动装箱,所以给人一种错觉,集合可以存储基本类型。array.add(1) 其实是 array.add(new Integer(1))
2.从集合中取出的元素都是Object类型.所以取出这段代码中集合的元素时需要向下转型
String str = (String) item;String str = (String) item;如果不加以判断其类型,一个Integer 类型的对象强行转换成String类型,你在编译的时就会抛异常。
3.如果想要避免这两点 可以使用泛型(对加入集合的元素类型进行判断,遍历时也不需要强制转换)
20220328



