有沒有在Java反射調用getMethod或其他一個不會拋出異常,如果找不到方法的方法嗎?也許只是返回一個null而已?反射getMethod沒有導致異常
我正在通過一個應用程序來減少預期的異常,這似乎是一個可能的候選人。
有沒有在Java反射調用getMethod或其他一個不會拋出異常,如果找不到方法的方法嗎?也許只是返回一個null而已?反射getMethod沒有導致異常
我正在通過一個應用程序來減少預期的異常,這似乎是一個可能的候選人。
您可以通過的getMethods迭代()和返回null
如果你沒有找到一個匹配。
我打算用這個解決方案和一個緩存。謝謝。 –
Reflection API也使用其自己的SoftReferenced緩存。 –
如果您還沒有閱讀過此article,請查看。
Android開發人員的網站似乎沒有使用try-catch
塊來實現此效果的問題...我認爲你應該沒問題。
如果跨多個SDK兼容性是你的主要關注點,可以按如下能夠通過包裝你的代碼,以避免反射都聚集在if-else
塊:
if (currentAPIVersion >= android.os.Build.VERSION_CODES.FROYO){
// Do something for froyo and above versions
} else{
// do something for phones running an SDK before froyo
}
根據您的應用需求,可能適合使用getMethods()。它會返回類中所有已定義方法的數組。您可以通過名稱映射返回的方法,或者按照您的喜好使用它們。 但是,請注意,這可能比調用getMethod()僅需要您所需的方法並最終捕獲異常要慢。在這種情況下,緩存可能有所幫助。
@彼得:真的很難相似的答案,只是沒有讀你的寫作我的... –
當然,如果你用自己的方法包裝呼叫,你可以做任何你想做的事情。 – Perception
「try-catch」塊有什麼問題? – beerbajay
也許我錯了,但有預期的異常感覺就像代碼味道。 –