2009-06-16 14 views
0

Javaについての質問Reflections:クラスの特定のフィールドが配列の場合、チェックアウトする必要があります。 しかし、私の問題は:クラスの属性でisArray()を直接実行すると動作します。しかし、私はそれを下の方法で使用すると、 "実際の"配列がこのFieldクラスにあるので、私は推測しますか? どのように私はそれが動作するように任意のアイデア - 私はキャストまたはsthが欠けていると思うその? ありがとう!Java Reflection isArray()always false

Field fields[] = object.getClass().getDeclaredFields(); 

for (Field field : fields) { 
    if (field.getClass().isArray()) { 
     //Always false. 
    } 
} 

答えて

0

あなたはむしろ、配列そのものよりも、フィールドの個々の要素をテストしている。

+0

申し訳ありませんが、これはまったく理解できません。 "フィールドの要素?"配列には要素があります。フィールドはありません。 – finnw

+1

'fields'は変数 'fields'と同じです。 – PaulJWilliams

4

あなたのコードを読んでください

Field fields[] = obj.getClass().getDeclaredFields(); 

for(Field field : fields) { 
    if(field.getType().isArray()){ 
    //Actually works 
    } 
} 

field.getClass()をそのまま使用すると、Field.classまたはField *のサブクラスのClassインスタンスが常に返されます。

*私は、このような混乱した言葉の文について謝罪します。