黑马程序员技术交流社区

标题: 数组和Object问题 [打印本页]

作者: 一诺千金    时间: 2014-3-31 13:48
标题: 数组和Object问题

int等等的那些基本类型的父类都是Object,数组的父类也是Object,

为什么(Object)int[ ]是不行的而

(Object)String[]则是可以的

public static void main(String[] args) throws Exception {            String startingClassName = args[0];           Method mainMethod = Class.forName(startingClassName).getMethod( "main",String[].class);            mainMethod.invoke(null,newobject[]{ new String[]{ "111","222","333"}}) ;      }第二种解决方案:(Object)new String[]{ "111","222","333"}//这里有些不理解。



作者: ehuashao    时间: 2014-3-31 14:00
不是太清楚你想问什么,这是以前的帖子,复制过来,供你参考下。
int是一个基本数据类型,int[]才是一个引用数据类型,Object a = new int[]{1,2};这是建立一个数组对象然后赋给Object是可以的,Object[] c = new int[]{1,2};这个时候你是把1和2当做元素来进行对对象数组存储的,就错了。String是一个引用数据类型,是Object的子类,String[]{"a","b"},这里是把String类型的数据当做元素存储是可以的。
Object[] c = new iInteger[]{1,2};
这才是可以通过编译的,Integer和int是不同的,这个你可以仔细比较一下他们的区别。
作者: 郭黎明    时间: 2014-3-31 14:07
  Method mainMethod = Class.forName(startingClassName).getMethod( "main",String[].class)在这句代码里String[].class代表的是要得到所传参数类为String[] 类型的方法,你得到的方法是接收String数组的,然后你往这个方法里传int数组,结果肯定不行,类型不匹配。
作者: syusikoku    时间: 2014-3-31 14:35
楼主的话好像有问题,引用数组类型都是可以使用Object接收的。基本数据类型的父类不是Ojbect.int[]可以使用Object接收的。但是不可以使用Object[]接收。二维数组可以使用Object接收也是可以使用Object[]接收。因为二维数组中其实存放的是数组中的数组。它其实是一个一维数组中存放了元素就是一维数组。String它也是Object,String[]它是可以被Object接收也是可以被Object[]接收的。你学到高新技术的时候会用到的。
作者: 枫儿    时间: 2014-4-6 19:29
楼主你好,如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作




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