理解:Java集合有个缺点,把一个对象丢进集合里后,集合就会忘记这个对象的数据类型,当再次取出该对象时,该对象的编译类型会变成object类型(运行时类型没变),增加了泛型后的集合,完全可以记住集合中元素的类型,并在编译时检查几何中元素的类型,如果试图向集合中添加不满足类型要求的对象,编译器会提示错误。
目的:解决从集合中取数据时数据类型不统一的弊端。
泛型:Java的参数化类型,允许程序在创建集合时指定集合的参数元素的类型(类型不合要求将无法添加进集合)
package AllTests;
import java.util.ArrayList;
public class GenericityTest {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(123);
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add(true);
for(Object ls:list) {
System.out.println(ls);
}
}
}
当foreach似乎遍历时如果不用Object,该用什么呢?似乎哪个都不对。所以这就是泛型的作用了。
package AllTests;
import java.util.ArrayList;
public class GenericityTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add(123); //这里会报错
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
for(Object ls:list) {
System.out.println(ls);
}
}
}
报错如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int) at AllTests.Genericity
Test.main(GenericityTest.java:9)
以上!