zoukankan      html  css  js  c++  java
  • jdk自带的动态代理

    package com.stone.dp.proxy;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    /**
     * jdk自带的动态代理;必须实现了某个接口;<br>
     */
    public class JdkProxy implements InvocationHandler {
    
        private Object obj;
    
        public JdkProxy(Object obj) {
            this.obj = obj;
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args)
                throws Throwable {
            System.out.println("before...");
            Object invoke = method.invoke(obj, args);
            System.out.println("after...");
            return invoke;
        }
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Car car = new Car();
            InvocationHandler h = new JdkProxy(car);
            Movable m = (Movable) Proxy.newProxyInstance(car.getClass()
                    .getClassLoader(), car.getClass().getInterfaces(), h);
            m.move();
        }
    }
    
    /**
     * 实现的接口;
     */
    interface Movable {
        public void move();
    }
    
    /**
     * 被代理的类;
     */
    class Car implements Movable {
    
        @Override
        public void move() {
            System.out.println("car is moving...");
        }
    
    }
  • 相关阅读:
    【数据库领域】mysql中in与or对比
    数据库优化
    数据库-索引
    数据库-事务
    数据库-视图
    数据库设计
    数据库编程提高
    数据库高级操作
    数据库基本操作
    with-上下文管理器
  • 原文地址:https://www.cnblogs.com/stono/p/4397434.html
Copyright © 2011-2022 走看看