如果我
,如何在方法compare(T o1, T o2)
中使用调用
答案 0 :(得分:2)
正如奥宾指出的那样:比较器被称为非常多次!在比较器中使用慢速反射似乎是一种宏伟而光荣的自杀方式。我无法想象必须这样做(因为你不能的事实不应该将苹果与橘子比较,如果你只有苹果,你已经知道如何比较它们)!
我不明白,你为什么要这样做。如果您发布到目前为止的代码,这将更加清晰,我们可以帮助您更好!
但是,回答关于如何捕获通过反射调用的方法抛出的异常的问题:
的API文档当通过抛出异常终止被调用的方法时,它明确表示抛出InvocationTargetException
:
InvocationTargetException - 如果基础方法抛出异常。
所以这就是你可以做的,使用Throwable.getCause()
获取原始异常:
try {
myMethod.invoke(myArgs...);
} catch(InvocationTargetException e) {
Throwable myOriginalException = e.getCause();
}