首页 > 解决方案 > 调用公共方法时如何处理 IllegalAccessException

问题描述

在反思中,在某些情况下您知道您调用的方法是公共方法,例如您从getConstructoror获取的构造函数getMethodIllegalAccessException但是,当您尝试调用这些方法时,编译器仍然会抱怨。这在某种程度上是矛盾的,但可以理解,因为返回类型仍然是 a Method。我只是想知道处理这种情况的最佳做法是什么?一个虚拟的 try catch 可以工作,但看起来很奇怪。

标签: java

解决方案


重新抛出异常是正确的做法,即

try {
  Method m = ...
  m.invoke(...);
} catch (IllegalAccessException e) {
  throw new RuntimeException(e);
}

否则,如果您“知道”的方法是公开的,而它不是公开的,那么您可能永远不会发现(如果您的 catch 子句只是忽略了异常)。


推荐阅读