Можете ли вы вызвать метод через отражение от имени другого класса

1

У меня есть client.class, который использует Util.class для вызова метода на target.class. Вызов принудительно вызван методом setAccessible (true) методу target.class.

Вопрос: Есть ли способ определить этот Util.class, имеет ли клиент.класс доступ к этому конкретному методу target.class?

Я хочу пропустить использование метода setAccessible (true). client.class имеет доступ к методу, который я вызываю в target.class, но Util.class не имеет доступа, потому что метод защищен или по умолчанию.

Теги:
reflection

1 ответ

2
Лучший ответ

Возможно, вам удастся установить, имел ли класс клиента доступ к методу, рассматривая пакеты, цепочку наследования и доступность метода. Взгляните на класс MethodModifierSpy в обучающих программах Java.

Но даже если у класса клиента был доступ, ваш код в Util все равно должен был бы вызвать setAccessible(true) когда Util не имеет доступа, поскольку код отражения является частью Util, а не класса клиента.

  • 0
    Я мог бы использовать ваш совет, чтобы определить доступ, спасибо. Я думаю, что то, что я в конечном итоге хочу, невозможно, так как это будет только другая форма олицетворения, которую обходит отражение setAccessible (true).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню