Так же: класс имеет метод sayHello(). Когда экземпляр класса вызывает sayHello(), метод в другом классе называется автоматическим до вызова sayHello().Как сделать метод называемым пассивным до вызова метода
пример кода может выглядеть так:
public class Robot{
public static void doSomethingBefore(){
System.out.println("Do something before sayHello");
}
}
public class Person {
public void sayHello(){
System.out.println("hello");
}
public static void main(String[] args){
Person p = new Person();
p.sayHello();
}
}
Выход Результат:
Do something before sayHello
hello
Кажется, это можно сделать с помощью шаблона прокси. Но я хочу, чтобы это было проще.
Использование аннотаций:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface MethodListener {
public String className();
public String methodName();
}
Затем поместите MethodListener аннотацию на методе SayHello() в классе Person,
public class Person {
@MethodListener(className="Robot",methodName="doSomethingBefore")
public void sayHello(){
System.out.println("hello");
}
public static void main(String[] args){
Person p = new Person();
p.sayHello();
}
}
Когда метод, который имеет MethodListener аннотацию быть вызвана, метод doSomethingBefore() называется автоматическим.
Возможно ли это? Если это можно сделать, как его достичь?