- 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输出的确不是数组的结果,而是数组的引用地址
|
|