Java 容器泛型_底层源码解读 尚学堂133
先上代码:
import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; public class Test { public static void main(String[] args) { List<String> list = new ArrayList<String>(); Map map = new HashMap(); } }
我们只是强烈建议使用泛型。事实上,不使用编译器也不会报错!就像上面代码中,Map后面没有<>
eclipse代码里写一个List,按Ctrl+Shift+o导入包,会发现有选择:
我们要导入的是java.util.List这个包
查看其源码(Ctrl+鼠标左键):
public interface List<E> extends Collection<E> { ...... }
读源码不用所有的都读通,读源码是为了更深刻地理解概念,而不是为了读源码。
List接口后面跟了个泛型<E>
List接口的一个实现类ArrayList也需要导入(import java.util.ArrayList;)。
其源码:
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable {......}
会发现其实现类ArrayList后面也跟了个泛型<E>
他相关的方法里也会用到泛型,比如:
public E set(int index, E element) { rangeCheck(index); E oldValue = elementData(index); elementData[index] = element; return oldValue; }
接口Map有2个泛型:
public interface Map<K,V> { ...... }
它的实现类HashMap也用了泛型:
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {......}
上一篇:
IDEA上Java项目控制台中文乱码