标题: 简单程序求解决,数组的反射,打印数组成员 [打印本页] 作者: kangxiaoning 时间: 2013-11-21 10:28 标题: 简单程序求解决,数组的反射,打印数组成员 运行结果为什么会显示非法参数异常,我的参数不是定义的Object么
sfsd
Exception in thread "main" java.lang.IllegalArgumentException: Argument is not an array
at java.lang.reflect.Array.getLength(Native Method)
at com.heima.test.aa.printSring(aa.java:27)
at com.heima.test.aa.main(aa.java:13)
代码如下:
package com.heima.test;
import java.lang.reflect.Array;
public class aa
{
public static void main(String[] args)
{
String []a4 = new String[]{"aa", "bb", "cc"};
printSring("sfsd");
printSring(a4);
}
public static void printSring(Object obj)
{
Class clazz = obj.getClass();
if(clazz.isArray())
{
int len = Array.getLength(clazz);
for(int i = 0; i < len; i++)
{
System.out.println(Array.get(clazz, i));
}
}
else
{
System.out.println(obj);
}
}
}作者: ysunday 时间: 2013-11-21 10:48
int len = Array.getLength(clazz);
这句有问题,clazz是一个Class类型的对象,是[Ljava.lang.String这个东西,当然不是数组,你要getLength是Obj,也就是你传进来的数组才行,Array.getLength(obj);
然后
System.out.println(Array.get(clazz, i));
这句也有问题,clazz根本不是你传进来的数组,而是你得到的那个数组的.class文件,是[Ljava.lang.String,所以你要做的Array.get(obj,i)吧,