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