Использование аннотаций функций Java во время вызова для вызова внешнего кода - PullRequest
0 голосов
/ 02 июня 2018

Есть ли в Java способ добавить аннотацию к методу, чтобы всякий раз, когда он вызывался, вызывался также метод в другом модуле?

Например, допустим, у меня есть методnamed reportSuccess(*parameters*) определен в другом модуле, который я хочу вызывать всякий раз, когда вызывается функция, отмеченная @ShouldReportSuccess(*parameters*).В Python это довольно просто, но я не уверен, как это сделать на Java.Я нашел способы перебора аннотированных методов во время выполнения, используя отражение (например, здесь ), но не то, как я мог бы затем изменить аннотированные методы для вызова внешнего метода.

1 Ответ

0 голосов
/ 02 июня 2018

Схожий по синтаксису, аннотация Java не работает как декоратор Python.

В Python декоратор - это синтаксический сахар, который вызывает функцию с текущей функцией в качестве параметра.

@my_decorator
def my_function:
    pass

Это то же самое, что и

def my_function: pass
my_function = my_decorator(my_function)

В Java аннотации предназначены исключительно для метаданных, поскольку это касается JVM.Эти метаданные на самом деле сохраняются в файле класса и могут быть получены независимо от загрузчика классов.

На самом деле вы можете делать довольно креативные вещи, используя процессор аннотаций или такую ​​библиотеку, как lombok.Но это делается во время компиляции, а не во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...