이렇게 : 클래스에는 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();
}
그런 다음, Person 클래스의 메소드의 sayHello()에 MethodListener 주석을 넣어 MethodListener 주석이있는 방법은 호출 될
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();
}
}
doSomethingBefore() 메소드는 자동으로 호출됩니다.
가능하면 할 수 있습니까? 어떻게 할 수 있습니까?