我有一个client.class,它使用Util.class调用target.class上的一个方法。通过对target.class的方法调用setAccessible(true)来强制调用。
问题:是否有一种方法可以让这个Util.class确定client.class是否可以访问target.class的这个特定方法?
我想跳过必须使用setAccessible(true)方法。client.class可以访问我在target.class中调用的方法,但是Util.class没有访问权限,因为该方法是受保护的或默认的。
您可以通过检查包、继承链和方法的可访问性来确定客户端类是否可以访问该方法。看一下Java教程中的MethodModifierSpy
类。
但是即使客户端类有访问权,当Util
没有访问权时,您在Util
中的代码仍然需要调用setAccessible(true)
,因为反射代码是Util
的一部分,而不是客户端类。