java - 调用公共方法时如何处理 IllegalAccessException
问题描述
在反思中,在某些情况下您知道您调用的方法是公共方法,例如您从getConstructor
or获取的构造函数getMethod
。IllegalAccessException
但是,当您尝试调用这些方法时,编译器仍然会抱怨。这在某种程度上是矛盾的,但可以理解,因为返回类型仍然是 a Method
。我只是想知道处理这种情况的最佳做法是什么?一个虚拟的 try catch 可以工作,但看起来很奇怪。
解决方案
重新抛出异常是正确的做法,即
try {
Method m = ...
m.invoke(...);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
否则,如果您“知道”的方法是公开的,而它不是公开的,那么您可能永远不会发现(如果您的 catch 子句只是忽略了异常)。
推荐阅读
- c# - 是否有与 C# Structs/StructLayout 等效的功能,在 C++ 中具有字段偏移量?
- reactjs - 为什么我的 useState 不适用于我的 gatsby 网站?
- c - 使用标准 C 库将文件读取到内存 - Windows 过早识别 EOF 但适用于 Mac、Linux
- javascript - SyntaxError: Unexpected token ( 在 Azure Function 中引用 npm 包时
- forms - 如何从树枝上的表单(POST)中检索数据而不刷新它们
- spring-boot - Spring Boot dockerizing 应用程序在主机中创建文件
- c++ - Qt 5.14 ubuntu 18.04 中的 cuda 10.2
- c - 用多个换行符将输入输入到 C 中的 read() - 第一个字符“已使用?”
- laravel - 使用 laravel 中的 where 子句使用数组更新许多记录
- javascript - 如何循环数据结合while函数和if条件