黑马程序员技术交流社区

标题: 有关反射的一点小问题? [打印本页]

作者: 孔斌    时间: 2013-1-31 15:56
标题: 有关反射的一点小问题?
  1. int []a = new int[]{1,2,3};//基本类型不是Object
  2.                 String b[] = new String[]{"aaa","bbb","ccc"};
  3.                 Object aObj = a;
  4.                 //Object[] aObj3 = a; 这个地方为什么编译不通过,
  5.                 Object[] bObj = b;
  6.                 //System.out.println(Arrays.asList(a));//不能打印这个的原因是什么呢?
复制代码
这个地方还是有点不懂?

作者: 小学生0987    时间: 2013-1-31 17:35
你都说了in是基本数据类型不是对象,当然不能用对象数组表示,还有将a转换为list后打印的结果很正常啊
作者: 邝雄伟    时间: 2013-1-31 18:09
原因是a里面是基本类型 不是object,所以编译不能通过,也不能打印
作者: 谢毅    时间: 2013-1-31 18:24
你自己都知道基本类型不是Object,那再推到一下就知道基本数据类型数组不是Object[]了。至于为什么System.out.println(Arrays.asList(a));不能打印,这你说错了,肯定是能打印,只不过因为a是相当于一个Object对象存进了List集合,那打印的肯定就是集合里这个Object对象,由于是数组就理所应当的是地址值了。
作者: 王立浩    时间: 2013-1-31 22:04
int[]到object[] 的转换是不可以的,就是基本类型与object类型是不同的
而你说的打印不出是什么意思?是说的打印不出数组中的元素吧,若是的话,这是因为asList方法中声明是这样的
public static <T> List<T> asList(T... a)
传入什么类型返回什么类型的list集合,代码中传入的是int[],那么返回的是List<int[]>类型的集合,而List集合并没有覆盖toString()方法那么打印的肯定是类似于[[I@。。。之类的hashcode值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2