黑马程序员技术交流社区
标题:
关于数组反射的小疑问
[打印本页]
作者:
cyh8807
时间:
2013-3-3 09:59
标题:
关于数组反射的小疑问
import java.lang.reflect.*;
public class ReflectArrayDemo
{
public static void main(String[] args)
{
String[] str = new String[]{"ab","cd","deg"};
printObject(str);
printObject("abc");
}
public static void printObject(Object obj)
{
Class cls = obj.getClass();
//if(cls == Array.class) 问题在这里
if(cls.isArray())
{
int len = Array.getLength(obj);
for(int x=0; x<len; x++)
{
System.out.println(Array.get(obj,x));
}
}
else
{
System.out.println(obj);
}
}
}
复制代码
请问在这个程序中 cls == Array.class 与cls.isArrya()这两行代码的不同之处具体该怎么理解?
它们所传递的不是同一个信息吗?都是判断cls 是不是一个Array的实例对象,但是运行的时候cls==Array.class输出的确不是数组的结果,而是数组的引用地址
作者:
谢洋
时间:
2013-3-3 13:00
先理解下Type 你就明白为什么了,
Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
isArray() 判定此 Class 对象是否表示一个数组类对应的Type: 数组类型
作者:
杨杨
时间:
2013-3-4 18:42
请问在这个程序中 cls == Array.class 与cls.isArrya()这两行代码的不同之处具体该怎么理解?
cls 判断是否为数组 如果cls ===Array.class 就永远是true了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2