学泛型感觉很难,也还有不懂的,在这说一下泛型的学习心得吧
在java5之前,非泛型的集合可以容纳任何类型对象,是的,这对强类型化语言来说,对程序员来说很不爽,所以引入泛型。
泛型通过增强集合的类型来处理放入和取出的两端,- List<String> myList = new Array<String>();
- myList.add("Fred");
- myList.add(new Dog());
复制代码 输入得到保证,自然输出也能得到保证-------String s = myList.get(0);
但如果是混用泛型与非泛型方法的话,添加一个外部数据也不会造成错误。- import java.util.*;
- public class TestBadLegacy{
- public static void main(String[] args){
- List<Integer> myList = new ArrayList<Integer>();
- myList.add(4);
- myList.add(6);
- Inserter in = new Inserter();
- in.insert(myList);
- }
- }
- class Inserter{
- void insert(List list){
- list.add(new String(42));
- }
- }
复制代码 但编译器会发出警告。可以将泛型理解成编译时保护。而这与数组的区别一显无余,如果将上述代码换成数组,就会报错,可以理解为数组同时提供编译时保护和运行时保护。
|