Примерно так: в классе есть метод 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 () называется автоматическим.
Должно ли это быть возможным? Если это можно сделать, как этого достичь?