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项目控制台中文乱码
