2017-04-10 44 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參數是一個字符串,用於指定所需字段的簡單名稱。

相關問題