0
我如何使用方法compare(T o1, T o2)
調用如果我Method.invoke和異常
我如何使用方法compare(T o1, T o2)
調用如果我Method.invoke和異常
由於奧賓指出:比較被稱爲極很多倍!在比較中使用慢速反射似乎是一種輝煌而光榮的自殺方式。我無法想象要做到這一點(僅僅是因爲你不能將與蘋果進行比較,如果你只有蘋果,你已經知道如何比較它們)!
我沒看到,爲什麼你想這樣做。如果您發佈了迄今爲止的代碼,這將更加清晰,我們可以幫助您更好!
然而,回答你關於如何捕捉通過反射調用的方法拋出的異常問題:
看那API文檔的Method.invoke()
它明確規定拋出一個InvocationTargetException
的調用時方法拋出異常終止:
InvocationTargetException - 如果底層方法拋出異常。
,所以這是你可以做什麼,使用Throwable.getCause()
得到原始異常:
try {
myMethod.invoke(myArgs...);
} catch(InvocationTargetException e) {
Throwable myOriginalException = e.getCause();
}
比較已進行優化,使用反射在它確實是一個壞主意 – Aubin