2010-12-08 15 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

をクラスのフィールドを検索するには、次のように書くことができ、コードは、例外がスローされる原因となっているもの、いくつかのより多くのコード – Michele

+0

を提供してください? –

+0

コードを投稿してください。そして、リフレクションを通して使用しようとしているクラス。これは、間違ったクラスのインスタンスをメソッドに渡しているようです。 – daveb

答えて

3

ちょうどフィールドを推測するけど、...をあなたが渡しているオブジェクトと同じではないタイプのものです。

編集:あなたはTestClassのフィールドを取得し、現在のオブジェクトを参照するためにそれらを使用しています。

代わりにあなたはあなたがIllegalArgumentを使用しているのために、この

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

+1 - これはjavadocと一貫しています。 OP - javadocを読んでください! –

関連する問題