入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

可以把List<String>传递给一个接受List<Object>参数的方法吗?

创建时间:2016-10-26 投稿人: 浏览次数:1218


打印 上一主题 下一主题 [复制链接]
jiangweibin2573

该用户从未签到

13

黑马币

25

技术分

11

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
跳转到指定楼层 楼主  发表于 2014-8-11 12:52:21 | 只看该作者 回帖奖励
本帖最后由 jiangweibin2573 于 2014-8-11 13:30 编辑

如果一个方法定义接受的参数是List<Object>;我可以把List<String>传给该方法吗?为什么!
就想下面这样
  1. import java.util.*;

  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 List<String> str = new ArrayList<>();
  5.                 printList(str);
  6.         }

  7.         public static void printList(List<Object> str) {
  8.                 Iterator it = str.iterator();
  9.                 while(it.hasNext()){
  10.                         System.out.println(it.next());
  11.                 }
  12.         }
  13. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 收藏收藏 分享淘帖
  回复

举报

﹑淼实名认证

该用户从未签到

20

黑马币

25

技术分

14

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
沙发  发表于 2014-8-11 13:00:31 | 只看该作者
可以啊,所有类都继承Object。传递后相当于多态了。
 
  回复 支持 反对

举报

fantacyleo

该用户从未签到

171

黑马币

91

技术分

17

主题

金牌黑马

Rank: 5Rank: 5

黑马骑士勋章

  • 发消息
藤椅  发表于 2014-8-11 13:03:11 | 只看该作者
不行吧,你让一个能管大学生中学生小学生的老师(List<Object>)去管一个能管中学生的老师(List<String>),合适吗?
 
  回复 支持 反对

举报

justin1258实名认证

该用户从未签到

112

黑马币

49

技术分

14

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
板凳  发表于 2014-8-11 13:04:22 | 只看该作者
不行不行..
 
  回复

举报

jiangweibin2573

该用户从未签到

13

黑马币

25

技术分

11

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
报纸   楼主| 发表于 2014-8-11 13:11:20 | 只看该作者
fantacyleo 发表于 2014-8-11 13:03
不行吧,你让一个能管大学生中学生小学生的老师(List)去管一个能管中学生的老师(List),合适吗? ...

但是,我这个问题,按你的比方来说,我这么描述:将一个中学老师交给一个可以管大、中、小学老师的机构,不可以吗
 
  回复 支持 反对

举报

fantacyleo

该用户从未签到

171

黑马币

91

技术分

17

主题

金牌黑马

Rank: 5Rank: 5

黑马骑士勋章

  • 发消息
地板  发表于 2014-8-11 13:16:45 | 只看该作者
jiangweibin2573 发表于 2014-8-11 13:11
但是,我这个问题,按你的比方来说,我这么描述:将一个中学老师交给一个可以管大、中、小学老师的机构, ...

当然不可以。如果你认为List<String>是中学老师,那么List就是老师,你又怎么能把List<Object>的List解读为机构呢?
财经专业出身的编程爱好者~绝不发水帖,偶尔回复水帖~
  回复 支持 反对

举报

jiangweibin2573

该用户从未签到

13

黑马币

25

技术分

11

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
7#   楼主| 发表于 2014-8-11 13:26:53 | 只看该作者
fantacyleo 发表于 2014-8-11 13:16
当然不可以。如果你认为List是中学老师,那么List就是老师,你又怎么能把List的List解读为机构呢? ...

String是一个对象,Object可以接受任意类型对象。
这个问题中,我是把List<String>当参数去传给一个方法,不知道具体为啥不行。
List<String>是实际参数,List<Object>是形式参数,形参可以接受的范围不是已经包括了实参范围吗?
 
  回复 支持 反对

举报

es2379649实名认证

该用户从未签到

38

黑马币

26

技术分

15

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
8#  发表于 2014-8-11 13:39:07 来自手机 | 只看该作者
泛型中写什么就是什么吧,不考虑继承
 
  回复 支持 反对

举报

icris

该用户从未签到

101

黑马币

37

技术分

3

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
9#  发表于 2014-8-11 13:44:35 | 只看该作者
完整的写法是 List<? extends Object> list
在这里 extends Object 是必然的,可以写作 List<?> list
不要用 str 命名不是字符串的东西…
 
  回复 支持 反对

举报

fantacyleo

该用户从未签到

171

黑马币

91

技术分

17

主题

金牌黑马

Rank: 5Rank: 5

黑马骑士勋章

  • 发消息
10#  发表于 2014-8-11 13:58:16 | 只看该作者
jiangweibin2573 发表于 2014-8-11 13:26
String是一个对象,Object可以接受任意类型对象。
这个问题中,我是把List当参数去传给一个方法,不知道 ...

。。。又回到我之前打的比方上了。这样吧,再说一个编译通不过的例子:
List<Fruit> fruits =  new ArrayList<Apple>();

左边是一个装水果的容器,右边是一个装苹果的容器。你可以用装水果的容器装苹果,但用装水果的容器去装一个装苹果的容器就不合适了吧?
财经专业出身的编程爱好者~绝不发水帖,偶尔回复水帖~
  回复 支持 反对

举报

liubea

该用户从未签到

43

黑马币

25

技术分

22

主题

中级黑马

Rank: 3Rank: 3

  • 发消息
11#  发表于 2014-8-11 14:31:32 | 只看该作者
没试过,不过根据多态应该可以,楼主可以试试
 
  回复 支持 反对

举报

❤如止水之絕境

该用户从未签到

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。