您可以代表另一个类通过反射调用方法吗?

时间:2014-03-18 00:49:50

标签: java reflection

我有一个client.class,它使用Util.class来调用target.class上的方法。通过将setAccessible(true)调用target.class的方法来强制调用。

问题:有没有办法让这个Util.class确定client.class是否可以访问target.class的这个特定方法?

我想跳过必须使用方法setAccessible(true)。 client.class可以访问我在target.class中调用的方法,但是Util.class没有访问权限,因为该方法是受保护的或默认的。

1 个答案:

答案 0 :(得分:2)

您可以通过检查方法的包,继承链和可访问性来确定客户端类是否可以访问该方法。看看MethodModifierSpy class in the Java tutorials

但即使客户端类具有访问权限,Util中的代码仍然需要在setAccessible(true)无权访问时调用Util,因为反射代码是{{}的一部分1}},而不是客户端类。