JAVA_代理_动态代理 (jdk代理)

通过动态代理,可以动态的在内容中构建代理对象(在程序运行时运用反射机制动态创建)
使用动态代理,要求目标对象必须实现了接口

1)定义接口
2)目标对象类实现接口
3)代理对象类实现InvocationHandler接口

    public class XXX implements InvocationHandler{

    //目标对象
    private Object target;
    
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // TODO Auto-generated method stub
        
        String name = method.getName();
        if(name.equals("xianglong18")){
            //调用目标对象方法
            Object ret = method.invoke(this.target, args);
            System.out.println("增加的内容");
            return ret;
        }else{
            return method.invoke(this.target, args);
        }
    }
    
    //设置目标对象,返回代理对象
    public Object bind(Object target){
        this.target = target;
        return Proxy.newProxyInstance(target.getClass().getClassLoader(), //类加载器
                target.getClass().getInterfaces(), //对象接口
                this);
    }

}

你可能感兴趣的:(JAVA_代理_动态代理 (jdk代理))