Я знаю, что могу сделать это на python довольно легко, используя декораторы, и мне было интересно, возможно ли это в java. Возможно, аннотации даже не подходят для этого, но после прочтения я ничего не могу найти о способе делать то, что хочу.
Скажем, например, у меня есть код, который выглядит так:
public class AnnotationHelp {
public static void exampleMethod() {
System.out.println("example method");
}
}
Поэтому вызов AnnotationHelp.exampleMethod()
должен печатать example method
.
Я хочу что-то вроде этого:
public class AnnotationHelp {
@MysteryAnnotation
public static void exampleMethod() {
System.out.println("example method");
}
}
Вызов этого, мы надеемся, вызовет код до и после exampleMethod
основного кода, что приведет к чему-то вроде:
Printed before main code example method Printed after main code
Возможно, я ошибаюсь в этом, но суть в том, что я хочу иметь возможность быстро добавлять код до и после нескольких методов (30+), и я думаю, что аннотации - это способ сделать это, но я не знаю как.
Я посмотрел на губы, но я не думаю, что могу добавить его в проект, над которым я работаю по сложным причинам. Я бы предпочел пойти на другое решение.
Альтернативой полному решению AOP, таким как AspectJ, которое может привести к жесткому поддержанию кода, поскольку оно почти кажется слишком "мощным", подходит для легкого подхода, такого как захват Java EE-перехватчиков.
Вам в основном нужен контейнер, который вызывает методы. Если метод аннотируется аннотацией перехватчика, вызовите соответствующий код до и/или после выполнения вызова метода.