对于带有泛型的类型安全来说非常重要

Ant*_* K. -4 java generics collections

有些奇怪我无法理解.泛型通常是一件好事.它在编译时提供类型安全性.例如:

class A{}

class B{}

static void someMethod() {
    List<B> listB = new ArrayList<B>();
    listB.add(B);
    listB.add(A); // here goes a compiler error

    // but this will compile fine
    List<Object> objList = new ArrayList<Object>();
    objList.add("String");
    objList.add(new Integer(9));
    objList.add(B);
}
Run Code Online (Sandbox Code Playgroud)

那么,Java开发人员错过了什么?

jga*_*fin 12

Object是所有内容的基类,您要添加Object类型的对象.因此类型安全(因为所有插入的对象都满足对象类型的要求).


aio*_*obe 9

如果创建列表Objects,则允许添加对象.这就是你可以添加实例的原因String,Integer并且B...... 它们都是对象!

也许你想知道为什么不仅允许添加Objects.嗯,允许添加子类型非常方便.例如,考虑您要在列表中存储大量数字.你不知道它们是浮点数还是整数等等.然后你就可以做到

List<Number> numList = new ArrayList<Number>();
numList.add(new Double(5.5));
numList.add(new Integer(5));
numList.add(new Long(10L));
Run Code Online (Sandbox Code Playgroud)