A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

运行结果为什么会显示非法参数异常,我的参数不是定义的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);
                }
               
        }
}

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 鼓励新同学,下次代码放代码框里哦~~~.

查看全部评分

4 个回复

正序浏览
FFF 金牌黑马 2013-11-21 18:10:43
板凳
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
回复 使用道具 举报
ysunday 发表于 2013-11-21 10:48
int len = Array.getLength(clazz);
这句有问题,clazz是一个Class类型的对象,是[Ljava.lang.String这个 ...

懂了谢谢了
回复 使用道具 举报
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)吧,

改了就行,别把.class跟你传进来的对象弄混啊

点评

FFF
小问题一个。对你这种40分的大神来说~小Case啦~就木有分分了!钱钱还是有的~  发表于 2013-11-21 18:08
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马