0

compare(T o1, T o2) 如果我如何在方法中使用调用

4

1 回答 1

2

正如 Aubin 指出的那样:比较器被调用非常非常多次!在比较器中使用慢反射似乎是一种壮丽而光荣的自杀方式。我无法想象不得不这样做(只是因为你不能不应该把苹果和橙子比较,如果你只有苹果,你已经知道如何比较它们了)!

我不明白,你为什么要这样做。如果您发布到目前为止的代码,这将更加清晰,我们可以为您提供更好的帮助!

但是,要回答有关如何捕获通过反射调用的方法引发的异常的问题:

查看Method.invoke()的 API 文档

它明确指出InvocationTargetException在调用的方法因抛出异常而终止时抛出:

InvocationTargetException - 如果底层方法抛出异常。

所以这就是你可以做的,使用Throwable.getCause()来获取原始异常:

try {
    myMethod.invoke(myArgs...);
} catch(InvocationTargetException e) {
    Throwable myOriginalException = e.getCause();
}
于 2012-11-10T10:20:26.287 回答