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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-王鹏 中级黑马   /  2013-5-9 17:16  /  1167 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-王鹏 于 2013-5-9 20:03 编辑
  1. package cn.itcast.day1;
  2. import java.lang.reflect.Array;
  3. import java.util.Arrays;
  4. public class ReflectDemo1 {
  5.         public static void main(String[] args)throws Exception {

  6.                 String[] a4 = new String[]{"a","b","c"};
  7.                 printObject(a4);
  8.         }
  9.         private static void printObject(Object obj){
  10.                 Class clazz = obj.getClass();
  11.                 if(clazz.isArray()){
  12.                         int len = Array.getLength(clazz);
  13.                         for(int x=0;x<len;x++){
  14.                                 System.out.println(Array.get(obj,x));
  15.                         }
  16.                 }else {System.out.println(obj);
  17.                 }
  18.         }
  19. }

复制代码
Exception in thread "main" java.lang.IllegalArgumentException: Argument is not an array
        at java.lang.reflect.Array.getLength(Native Method)
        at cn.itcast.day1.ReflectDemo1.printObject(ReflectDemo1.java:41)
        at cn.itcast.day1.ReflectDemo1.main(ReflectDemo1.java:35)

为什么会报出这样的错?

1 个回复

倒序浏览
本帖最后由 767348430 于 2013-9-23 11:34 编辑


你的int len = Array.getLength(clazz);参数不对,改为:private static void printObject(Object obj){
         Class clazz = obj.getClass();
         if(clazz.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);     }
}

CCRE]3YLIH}{$A0VUAEF6AX.jpg (43.84 KB, 下载次数: 3)

CCRE]3YLIH}{$A0VUAEF6AX.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马