[JVM은] 연구는 동적 프록시 노트

동적 에이전트 JDK 다음 예

인터페이스 주제 

공용  인터페이스 주제 {
     공공  추상적  무효 요청 (); 
}

 

구현 클래스 RealSubject

공공  클래스 RealSubject이 구현 주제 { 
    @Override 
    공공  무효 요청 () { 
        에서 System.out.println ( "realsubjct에서" ); 
    } 
}

 

연기 수업

공공  클래스 DynamicSubject는 구현 의 InvocationHandler { 

    개인 개체 하위; 

    공공 DynamicSubject (개체 OBJ) {
          .SUB = OBJ; 
    } 

    @Override 
    공용 객체 호출 (개체 프록시는 방법에있어서, [] args를 오브젝트) 가 발생 하는 Throwable { 
        에서 System.out.println ( "호출하기 전에"+ 법); 
        method.invoke ( .SUB, 인수); 
        에서 System.out.println ( "호출 한 후 :"+ 방법);
        반환  널 (null)을 ; 
    } 
}

 

클라이언트 클래스

공용  클래스 클라이언트 {
     공공  정적  무효 메인 (문자열 []에 args) { 
        RealSubject 중계국 = 새로운 RealSubject (); 
        핸들러의 InvocationHandler = 새로운 DynamicSubject (RS); 
        클래스 CLS = <?> rs.getClass (); 

        주제 대상 = (주제) 프록시. 
                newProxyInstance (cls.getClassLoader () cls.getInterfaces (), 핸들러); 
        () subject.request; 
    } 
}

 

결과

호출하기 전에 : 공공  추상적  무효 com.learn.jvm.Subject.request () 
realsubjct에서 
호출 한 후 : 공공  추상적  무효 com.learn.jvm.Subject.request ()

 

추천

출처www.cnblogs.com/heben/p/11478846.html