为了账号安全,请及时绑定邮箱和手机立即绑定

Java泛型:列表,列表<对象>,列表<?>

Java泛型:列表,列表<对象>,列表<?>

潇潇雨雨 2019-10-20 16:12:35
Java泛型:列表,列表<对象>,列表<?>有人能尽可能详细地解释以下类型之间的区别吗?ListList<Object>List<?>让我说得更具体些。我什么时候想用// 1 public void CanYouGiveMeAnAnswer(List l) { }// 2public void CanYouGiveMeAnAnswer(List<Object> l) { }// 3public void CanYouGiveMeAnAnswer(List<?> l) { }
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

用我自己简单的话说:


列单


将声明一个普通集合,可以保存任何类型,并将始终返回对象。


列表<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. 

我希望使用集合作为类型不会造成混乱,这是我唯一想到的树。


这里的区别是,我是不知道属于收藏等级制度。



查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 344 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信