zoukankan      html  css  js  c++  java
  • jdk-动态代理

    1.HelloWorld

    package reflect.proxy;
    
    public interface HelloWorld {
        void print();
    }

    2.HelloWorldImpl

    package reflect.proxy;
    
    public class HelloWorldImpl implements HelloWorld{
    
        @Override
        public void print() {
            // TODO Auto-generated method stub
            System.out.println("hello world!");
        }
        
    }

    3.HelloWorldInvocationHandle

    package reflect.proxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    
    public class HelloWorldInvocationHandle implements InvocationHandler{
        private HelloWorld helloWorld;
        public HelloWorldInvocationHandle(HelloWorld helloWorld) {
            this.helloWorld = helloWorld;
        }
        @Override
        public Object invoke(Object proxy, Method method, Object[] args)
                throws Throwable {
            // TODO Auto-generated method stub
            System.out.println("动态代理-begin");
            Object result = method.invoke(helloWorld, args);
            System.out.println("动态代理-end");
            return result;
        }
    
    }

    4.HelloWorldProxyFactory

    package reflect.proxy;
    
    import java.lang.reflect.Proxy;
    
    public class HelloWorldProxyFactory {
        public static HelloWorld getProxy(HelloWorld helloWorld) {
            HelloWorldInvocationHandle handle = new HelloWorldInvocationHandle(helloWorld);
            Object obj = Proxy.newProxyInstance(helloWorld.getClass().getClassLoader(), new Class[]{HelloWorld.class}, handle);
            return (HelloWorld)obj;
        }
        
        public static void main(String[] args) {
            HelloWorld helloWorld = new HelloWorldImpl();
            HelloWorld proxy = HelloWorldProxyFactory.getProxy(helloWorld);
            System.out.println(proxy.getClass().getName());
            proxy.print();
        }
    }
  • 相关阅读:
    Unix环境高级编程(九)信号
    Unix环境高级编程(八)进程关系
    Unix环境高级编程(七)fork函数总结
    Unix环境高级编程(六)进程控制
    Unix环境高级编程(五)进程环境
    Unix环境高级编程(四)数据系统文件和信息
    Unix环境高级编程(三)标准I/O库
    Unix环境高级编程(二)文件和目录
    Unix环境高级编程(一)文件I/O
    Linux中解析json---jq
  • 原文地址:https://www.cnblogs.com/jerry19890622/p/3287326.html
Copyright © 2011-2022 走看看