InvocationHandler

场景:Java 署理,InvocationHandler,Proxy

Java 代理,InvocationHandler,Proxy

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Test t=new Test();

         t.inter();
    }

   void inter(){
        ServiceProxy proxy = new ServiceProxy();
        ServiceImpl service = new ServiceImpl();
        proxy.setService(service);
        Object service2 = Proxy.newProxyInstance(ServiceImpl.class.getClassLoader(), new Class[]{Service.class} , proxy);
        System.out.println(service2.getClass());
        Service s = (Service)service2;             //只能转换为接口
    }

}

 

interface Service{
    String prt();
}

class ServiceImpl implements Service{
    public String prt(){
        System.out.println(" Interface Impl");
        return "InterFaceImpl";
    }
}

class ServiceProxy implements InvocationHandler{

    Object service;
   
    void setService(Object service){
        this.service=service;
    }
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        Object o=null;
        o=method.invoke(service, args);
        return o;
    }
}