黑马程序员技术交流社区
标题:
反射中的一些问题
[打印本页]
作者:
刘乃宽
时间:
2013-7-24 23:16
标题:
反射中的一些问题
本帖最后由 杨兴庭 于 2013-7-25 22:57 编辑
public class TypeCast {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
Object obj = arr; //为什么可以?
//Object[] objj = arr; 为什么不可以?
System.out.println(obj);
System.out.println(arr);
int[][] array = {arr,{4,5,6}};
Object o1 = array;
Object[] o2 = array; //为什么可以?
System.out.println(o1==o2); //true
System.out.println(o1==array); //true
System.out.println(o2[0]);
Object[] aa = {1,2,3};
for (int i = 0; i < aa.length; i++) {
System.out.println(aa[i]);
}
}
}
复制代码
作者:
toShareBeauty
时间:
2013-7-24 23:31
本帖最后由 toShareBeauty 于 2013-7-24 23:43 编辑
大哥你这哪里有反射啦
数组类型也是引用类型,并且是 Object 类的子类,是 JVM 内部支持的类型。
Object obj = arr; // 为什么可以?
复制代码
这句可以的原因是向上类型转换,arr 是 int[] 类型,int[] 类型可以向上转型为 Object,比如可以说 tom 是一只猫,那么就可以说 tom 是一只动物
//Object[] objj = arr; // 为什么不可以?
复制代码
这句是说 objj 中的元素的类型是 Object ,很明显 arr 中元素的类型是 int ,是基本类型的元素不是 Object 类型
Object[] o2 = array; // 为什么可以?
复制代码
这句可是说 o2 中的元素类型是 Object,array 中的元素是 int[] (但是 array 是 int[][] 类型), 和第一个一样, int[] 可以向上转型为 Object
你要注意的是什么时候是数组的元素类型匹配和其他类型匹配,什么时候是数组类和其他类型匹配。
作者:
月亮人生
时间:
2013-7-24 23:32
public class Demo6 {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
Object obj = arr; //为什么可以?
//因为:arr是一维数组,数组的类型也是Object的。
//Object[] objj = arr; 为什么不可以?
// 定义了个Object类型的一维数组objj,而arr是一维数组,arr里的元素是int类型的,是基本类型的,基本类型不是Object。
System.out.println(obj);
System.out.println(arr);
int[][] array = {arr,{4,5,6}};
Object o1 = array;
Object[] o2 = array; //为什么可以?
// 定义了个Object类型的一维数组o2, 而array是二维数组,二维可以当成是一维数组的元素还是一维数组。那么o2 的元素就是这些一维数组了,而一维数组可以是Object类型的。
System.out.println(o1==o2); //true
System.out.println(o1==array); //true
System.out.println(o2[0]);
Object[] aa = {1,2,3};
for (int i = 0; i < aa.length; i++) {
System.out.println(aa[i]);
}
}
}
复制代码
作者:
liuzhming
时间:
2013-7-24 23:33
基本类型的一维数组可以被当作Object类型使用,不能当作Object[]类型使用;非基本类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用。所以int类型的一维数组arr可以赋给Object类型的obj,不能赋给objj。array是int类型的二维数组,同理,可以赋给Object的一维数组。
作者:
denghui1010
时间:
2013-7-24 23:35
Object obj = arr;//为什么可以? arr是个数组,数组也是一个对象,,所以可以
Object[] objj = arr;为什么不可以? objj是个数组,数组里的元素是对象,arr是个数组,但数组里的元素是int,是基本数据类型,不是对象,所以不可以
Object[] o2 = array; //为什么可以?o2是数组,里面的元素是对象,array是二维数组,可理解为是一个一维数组,数组里的每个元素也是一维数组,即元素是对象,so OK
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2