A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王怡然 黑马帝   /  2012-5-11 13:34  /  2546 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args) {
  List<String> list = new ArrayList<String>();
  addAll(list, "a", "b", "c", "c", "d", "e");
  addAll(list, "x", "x", "o", "o");
  System.out.println(list);
}
  public static void addAll(List list, Object... arr){ //在这个地方定义的这个Object到底是什么意思?有什么作用?能用其他的吗?
  for (Object obj : arr)
   list.add(obj);    }


代码在上, 求解释,为什么要用Object;

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

13 个回复

倒序浏览
public static void main(String[] args) {
   List<String> list = new ArrayList<String>();
   addAll(list, "a", "b", "c", "c", "d", "e");
   addAll(list, "x", "x", "o", "o");
   System.out.println(list);
}
   public static void addAll(List list, Object... arr){ ——这个地方可以换成public static void addAll(List list Object[] obj) 效果是一样的
   for (Object obj : arr)
    list.add(obj);    }

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
李啸 发表于 2012-5-11 13:43
public static void main(String[] args) {
   List list = new ArrayList();
   addAll(list, "a", "b", " ...

你没有明白我的意思.
我问的是为什么那里要用Object,我能不能吧Object换成其他的,  它在这个地方有什么含义?
回复 使用道具 举报
public static void addAll(List list, Object... arr){
这个是典型的可变参数啊,这个是在JDK1.5之后出现的新特性。
Object 是指代对象,arr是参数名。这三个点的意思是,可以把很多个相同类型的对象放入arr里面,arr其实有点像是一个可变长度的数组。等之后运用的时候就可以直接咦数组下标来取arr中的值
JDK1.5之前,arr其实是一个数组,但是数组的话,我们就需要先给定一个数组,才能把这个数组当做参数传递进来,进行操作。
也就是说,你上面的 "a", "b", "c", "c", "d", "e"这些东东就需要放入一个char[]数组中再传入下面的那个方法中去用
新特性之后,那些字符就可以不用先放入字符数组中啦,你可以随意放入随意个字符,arr会把它们都装进去滴

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
Object... arr    是可变参数,跟你下面用的for in 语句一样,都是jdk1.5之后出现的新东西,这里用Object来定义就实现了多态,作用无非就是可以传多个参数进入你这个函数,当然你也可以用String,因为你上面泛型<String>,但是用Object实现多台有一点好处就是可以传入任意的其它类型的参数,这样你这个方法的复用程度就提高了。
回复 使用道具 举报
王怡然 发表于 2012-5-11 13:58
你没有明白我的意思.
我问的是为什么那里要用Object,我能不能吧Object换成其他的,  它在这个地方有什么含 ...

因为   用Object的话  你可以传多种值进去,比如String  比如int  传进去以后再写一个判断方法就可以了  用instanceof 来判断它是哪种类型 然后执行什么操作
回复 使用道具 举报
袁冬梅 黑马帝 2012-5-11 14:24:48
7#
王怡然 发表于 2012-5-11 13:58
你没有明白我的意思.
我问的是为什么那里要用Object,我能不能吧Object换成其他的,  它在这个地方有什么含 ...

可以,根据具体情况而定你这里的可以用Character都可以吧。额,你试试?
本来想说char,不过你这里是list,里面只能存储对象,所以,我觉得你改成Character可行,char就不可以了。
你试试吧,应该没问题的。
回复 使用道具 举报
public static void main(String[] args) {
  List<String> list = new ArrayList<String>();
  addAll(list, "a", "b", "c", "c", "d", "e");
  addAll(list, "x", "x", "o", "o");
  System.out.println(list);
}
  public static void addAll(List list, Object... arr){ //Object... arr 是可变参数,是jdk1.5之后出现的新特性。好处就是可以传入任意的其它类型的参数,这样你这个方法的复用程度就提高
  for (Object obj : arr)
   list.add(obj);    }
回复 使用道具 举报
public static void main(String[] args) {
  List<String> list = new ArrayList<String>();
  addAll(list, "a", "b", "c", "c", "d", "e");
  addAll(list, "x", "x", "o", "o");
  System.out.println(list);
}
  public static void addAll(List list, Object... arr){ //Object... arr 是可变参数,是jdk1.5之后出现的新特性。好处就是可以传入任意的其它类型的参数,这样//你这个方法的复用程度就提高
  for (Object obj : arr)
   list.add(obj);    }
回复 使用道具 举报
public static void main(String[] args) {
  List<String> list = new ArrayList<String>();
  addAll(list, "a", "b", "c", "c", "d", "e");
  addAll(list, "x", "x", "o", "o");
  System.out.println(list);
}
  public static void addAll(List list, Object... arr){ /*Object... arr 是可变参数,是jdk1.5之后出现的新特性。好处就是可以传入任意的其它类型的参数,这样你这个方法的复用程度就提高*/
  for (Object obj : arr)
   list.add(obj);    }
回复 使用道具 举报
/*Object... arr 是可变参数,是jdk1.5之后出现的新特性。好处就是可以传入任意的其它类型的参数,这样你这个方法的复用程度就提高*/

public static void main(String[] args) {
  List<String> list = new ArrayList<String>();
  addAll(list, "a", "b", "c", "c", "d", "e");
  addAll(list, "x", "x", "o", "o");
  System.out.println(list);
}
  public static void addAll(List list, Object... arr){ /*Object... arr 是可变参数,是jdk1.5之后出现的新特性。好处就是可以传入任意的其它类型的参数,这样你这个方法的复用程度就提高*/
  for (Object obj : arr)
   list.add(obj);    }
回复 使用道具 举报
在java类中所有的类都是从Object这个类继承过来的;Object...arr可变参数列表;能用其他的,将Object换String也能通过。
回复 使用道具 举报
public static void main(String[] args) {
  List<String> list = new ArrayList<String>();
  addAll(list, "a", "b", "c", "c", "d", "e");
  addAll(list, "x", "x", "o", "o");
  System.out.println(list);
}
  public static void addAll(List list, Object... arr){ /*Object... arr 是可变参数,是jdk1.5之后出现的新特性。好处就是可以传入任意的其它类型的参数,这样你这个方法的复用程度就提高*/
  for (Object obj : arr)
   list.add(obj);    }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马