2010-12-08 40 views
0

我,當我使用Java反射API我當我使用Java反射API

java.lang.IllegalArgumentException 
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:18) 
at java.lang.reflect.Field.get(Field.java:357) 

代碼得到這個例外有此異常:

Field fieldlist[] = TestValue.class.getDeclaredFields(); 
    String result=""; 
    try { 
     for (int i = 0; i < fieldlist.length; i++) { 
      Field fld = fieldlist[i]; 
      result += "name = " + fld.getName() + "\n"; 
      fld.setAccessible(true); 
      result += "value = " + fld.get(this)+ "\n"; 
      System.out.println("Result----->"+result); 
     } 
    } catch (SecurityException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (Exception e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
+0

您使用的是IllegalArgument,請提供一些更多的代碼 – Michele 2010-12-08 10:05:29

+0

是什麼造成異常的代碼拋出? – 2010-12-08 10:05:48

回答

3

只是猜測,但...領域適用於與您傳遞的對象不同的類型。

編輯:您正在獲取TestClass的字段,並使用它們來查找當前對象。

相反,你可以寫出下面查找類的領域這個

Field fieldlist[] = this.getClass().getDeclaredFields();