3 回答
TA贡献1155条经验 获得超0个赞
用我自己简单的话说:
列单
将声明一个普通集合,可以保存任何类型,并将始终返回对象。
列表<Object>
将创建一个列表,该列表可以容纳任何类型的对象,但只能分配另一个对象。列表<Object>
例如,这是行不通的;
List<Object> l = new ArrayList<String>();
当然,您可以添加任何东西,但只能拉动对象。
List<Object> l = new ArrayList<Object>();
l.add( new Employee() );
l.add( new String() );
Object o = l.get( 0 );
Object o2 = l.get( 1 );
最后
列表<?>
将允许您分配任何类型,包括
List <?> l = new ArrayList();
List <?> l2 = new ArrayList<String>();
这将被称为未知数既然共同的分母未知数是您将能够获取对象的对象(巧合)。
.的重要性未知数当它与子类一起使用时:
List<? extends Collection> l = new ArrayList<TreeSet>(); // compiles
List<? extends Collection> l = new ArrayList<String>(); // doesn't,
// because String is not part of *Collection* inheritance tree.
我希望使用集合作为类型不会造成混乱,这是我唯一想到的树。
这里的区别是,我是不知道属于收藏等级制度。
TA贡献2016条经验 获得超9个赞
方法论据:
List<? extends Foo>
List<Foo>
List<? super Foo>
方法返回值
List<? extends Foo>
List<Foo>
List<? super Foo>
您需要添加到列表中吗?你在乎名单上有什么吗?
是的-使用列表<foo>。
是的,不使用列表<?超级福>
不,是的-使用<?扩展foo>-最常见的。
不使用<?>
添加回答
举报