Comme suit: une classe a une méthode appelée sayHello(). Lorsqu'une instance de la classe appelle sayHello(), une méthode d'une autre classe est appelée automatique avant l'appel de sayHello().Comment faire pour qu'une méthode soit appelée passive avant d'appeler une méthode
l'exemple de code peut ressembler à ceci:
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();
}
}
Résultat de sortie:
Do something before sayHello
hello
Il semble qu'il peut être fait en utilisant le modèle de procuration. Mais je veux que ça puisse être plus simple.
Utilisez l'annotation:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface MethodListener {
public String className();
public String methodName();
}
ensuite mis l'annotation MethodListener sur la méthode sayHello() dans la classe de personne,
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();
}
}
Lorsque la méthode qui a l'annotation MethodListener être appelée, le La méthode doSomethingBefore() est appelée automatique.
Devrait-il être possible? Si cela est possible, comment l'atteindre?