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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一诺千金 中级黑马   /  2014-3-31 13:48  /  1348 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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"}//这里有些不理解。


4 个回复

倒序浏览
不是太清楚你想问什么,这是以前的帖子,复制过来,供你参考下。
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是不同的,这个你可以仔细比较一下他们的区别。
回复 使用道具 举报
  Method mainMethod = Class.forName(startingClassName).getMethod( "main",String[].class)在这句代码里String[].class代表的是要得到所传参数类为String[] 类型的方法,你得到的方法是接收String数组的,然后你往这个方法里传int数组,结果肯定不行,类型不匹配。
回复 使用道具 举报
楼主的话好像有问题,引用数组类型都是可以使用Object接收的。基本数据类型的父类不是Ojbect.int[]可以使用Object接收的。但是不可以使用Object[]接收。二维数组可以使用Object接收也是可以使用Object[]接收。因为二维数组中其实存放的是数组中的数组。它其实是一个一维数组中存放了元素就是一维数组。String它也是Object,String[]它是可以被Object接收也是可以被Object[]接收的。你学到高新技术的时候会用到的。
回复 使用道具 举报
楼主你好,如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马