Использование динамического прокси-сервера - это, насколько мне известно, самый простой способ «обогатить» поведение класса аннотациями, не прибегая к инструментальным средствам или сторонним средам.
InvocationHandler
может быть полностью общим, но для этого не требуется знание целевого класса. Пример в вас ссылка имеет
private final Login realLogin;
но это вполне можно заменить на
private final Object realLogin;
потому что вызов происходит с return method.invoke(realLogin, args);
.
Обратите внимание, что вы не сможете использовать эту технику с методом static
, как в вашем вопросе. Эта техника действительно работает только для методов экземпляра, и если объект реализует интерфейс.