黑马程序员技术交流社区
标题:
关于反射的问题
[打印本页]
作者:
刘源
时间:
2012-8-1 15:40
标题:
关于反射的问题
本帖最后由 刘源 于 2012-8-1 21:57 编辑
部分代码如下:
int[] a1 =new int[2];
Object aObj1 =a1;
Object[] aObj2 =a1;
String[] a2 =new String[]{"a","b"};
Object aObj3 =a1;
Object[] aObj4 =a1;
为什么红色那个语句系统会报错啊。听视频的意思好像是int不是Object的子类。如果不是的话,那它是属于谁啊,我把API找了下,没有找到int那个类啊
有明白人讲下吗。
顺便把String那个也讲下吗,脑袋笨,视频没怎么听懂。谢谢!
“
问题已经解决
”。
作者:
徐然
时间:
2012-8-1 15:55
int是基本数据类型,他没有父类,甚至没有自己的类,就如你在API怎么也不会找到class int
不过他有一个包装类Integer,如果你把int[]换成Integer[],Object[] aObj2 =a1;就不会报错了
String不属于基本数据类型,他有自己独有的类,继承了Object
String[]中的元素都是String类型,所以每个元素都是属于Object的子类
因此String[] a2 =new String[]{"a","b"};
Object aObj3 =a2;
Object[] aObj4 =a2;
符合规则,就不会报错.
作者:
李东升
时间:
2012-8-1 15:59
本帖最后由 李东升 于 2012-8-1 16:03 编辑
int[] a1 =new int[2];
Object aObj1 =a1;
Object[] aObj2 ={a1};
String[] a2 =new String[]{"a","b"};
Object aObj3 =a1;
Object[] aObj4 ={a1};
复制代码
这样子就不会报错了。
所有类都是Object的子类,基本类型除外。出错原因:上面你也写了Object aObj1 =a1;,那么a1这个数组就能看做object对象,你把一个Object对象赋值给Object数组怎么可能不报错呢?这就好像是把一个int值赋值给int数组。正确的应该是把int值赋值给int数组的其中一个元素。所以你的代码也可以这样改
int[] a1 =new int[2];
Object aObj1 =a1;
Object[] aObj2 =null;
aObj2[0]=a1;
String[] a2 =new String[]{"a","b"};
Object aObj3 =a1;
Object[] aObj4 =a2;
复制代码
String是属于Object类的子类,可以通过上述方法赋值给Object对象,也可以赋值给Object数组的某个元素。
作者:
刘源
时间:
2012-8-1 20:50
问题已经解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2