美文网首页
java jdk动态代理简单使用

java jdk动态代理简单使用

作者: 逐影随行 | 来源:发表于2021-11-18 22:18 被阅读0次

    java动态代理机制中有两个重要的类和接口InvocationHandler(接口)和Proxy(类),这一个类Proxy和接口InvocationHandler是我们实现动态代理的核心

    package com.hxj.algorithm;
    
    import com.alibaba.fastjson.JSON;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    public class ProxyDemo {
    
        public interface Car {
            void drive();
        }
    
        public class Benz implements Car {
            @Override
            public void drive() {
                System.out.println("let is go");
            }
        }
    
        public class CarHandler implements InvocationHandler {
            private Object object;
    
            public CarHandler(Object ob) {
                this.object = ob;
            }
    
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                System.out.println("parms=" + JSON.toJSONString(args));
                Object invoke = method.invoke(object, args);
                return invoke;
            }
        }
    
        public static void main(String[] args) {
            Car benz = new ProxyDemo().new Benz();
            CarHandler carHandler = new ProxyDemo().new CarHandler(benz);
            Car carProxy = (Car) Proxy.newProxyInstance(
                    Thread.currentThread().getContextClassLoader(),
                    benz.getClass().getInterfaces(),
                    carHandler
            );
            carProxy.drive();
        }
    }
    

    相关文章

      网友评论

          本文标题:java jdk动态代理简单使用

          本文链接:https://www.haomeiwen.com/subject/gaijtrtx.html