В Java нет эквивалента декораторам.
Насколько я понимаю, декораторы в Python по сути являются синтаксическим сахаром для преобразований методов.Например (из PEP 318 ):
def foo(cls):
pass
foo = synchronized(lock)(foo)
foo = classmethod(foo)
становится следующим:
@classmethod
@synchronized(lock)
def foo(cls):
pass
Подобные вещи не будут работать в Java, потому что методы Java необъекты первого класса, и связь между методом Java и именем метода не является изменяемой.
Вы можете сделать некоторые вещи, которые вы можете сделать с помощью декораторов Python, используя код на основе аннотаций, исходный код Java или байт-кодпереписывание и так далее.Однако реализованные таким образом декораторы должны рассматриваться как часть языка Java.(Точно так же, как если бы Lombok-ified Java не была настоящей Java.)