У меня есть client.class, который использует Util.class для вызова метода на target.class. Вызов принудительно вызван методом setAccessible (true) методу target.class.
Вопрос: Есть ли способ определить этот Util.class, имеет ли клиент.класс доступ к этому конкретному методу target.class?
Я хочу пропустить использование метода setAccessible (true). client.class имеет доступ к методу, который я вызываю в target.class, но Util.class не имеет доступа, потому что метод защищен или по умолчанию.
Возможно, вам удастся установить, имел ли класс клиента доступ к методу, рассматривая пакеты, цепочку наследования и доступность метода. Взгляните на класс MethodModifierSpy
в обучающих программах Java.
Но даже если у класса клиента был доступ, ваш код в Util
все равно должен был бы вызвать setAccessible(true)
когда Util
не имеет доступа, поскольку код отражения является частью Util
, а не класса клиента.