2017-04-10 9 views
-1

以下のコードでgetDeclaredFieldメソッドの機能は何ですか? tempClazzは、コード内のどこにも定義されていません。getDeclaredField()メソッドの結果は何ですか?

private static Field getDeclaredField(Class tempClazz, String fieldName) { 
    Field field = null; 
    try { 
     field = tempClazz.getDeclaredField(fieldName); 
     field.setAccessible(true); 
    } catch (SecurityException e) { 
     return field; 
    } catch (NoSuchFieldException e) { 
     tempClazz = tempClazz.getSuperclass(); 
     if (tempClazz == null) { 
      throw new RuntimeException(e); 
     } 
     field = getDeclaredField(tempClazz, fieldName); 
     return field; 
    } 
    return field; 
} 
+0

「tempClazz」はパラメータです。メソッドに引数を渡します。あなたが求めていることは本当に不明です。 –

+0

そのメソッドは実際には 'NoSuchFieldException'をスローする必要があります(正確にはそれを再描画してください)。このメソッドのようにラップするのではなく、例外メッセージのこの方法は混乱します。なぜなら、基本的には常に「java.lang.Objectのそのようなフィールドはありません」ということです。 –

答えて

0

確かにそれはある:

private static Field getDeclaredField(Class tempClazz 

それは、そのメソッドのパラメータです!

そして、そのメソッドの意味について:単にそのjavadocを学ぶ:

このClassオブジェクトが表すクラスまたはインタフェースの指定の宣言フィールドを反映するFieldオブジェクトを返します。 nameパラメータは、目的のフィールドの単純な名前を指定するStringです。

関連する問題