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 list = new ArrayList();
		Map map = new HashMap();
	}
}

我们只是强烈建议使用泛型。事实上,不使用编译器也不会报错!就像上面代码中,Map后面没有<>

eclipse代码里写一个List,按Ctrl+Shift+o导入包,会发现有选择:

Java 容器泛型_底层源码解读 尚学堂133_第1张图片

我们要导入的是java.util.List这个包

查看其源码(Ctrl+鼠标左键):

public interface List extends Collection {
    ......
}

读源码不用所有的都读通,读源码是为了更深刻地理解概念,而不是为了读源码。

List接口后面跟了个泛型

List接口的一个实现类ArrayList也需要导入(import java.util.ArrayList;)。

其源码:

public class ArrayList extends AbstractList
        implements List, RandomAccess, Cloneable, java.io.Serializable
{......}

会发现其实现类ArrayList后面也跟了个泛型

他相关的方法里也会用到泛型,比如:

    public E set(int index, E element) {
        rangeCheck(index);

        E oldValue = elementData(index);
        elementData[index] = element;
        return oldValue;
    }

接口Map有2个泛型:

public interface Map {
    ......
}

它的实现类HashMap也用了泛型:

public class HashMap extends AbstractMap
    implements Map, Cloneable, Serializable {......}

 

你可能感兴趣的:(Java_尚学堂笔记,java)