栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDK动态代理实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDK动态代理实现

 主要就一句:

Proxy.newProxyInstance(a,b,c)

a参数是自己的类,b参数是要实现加强类的接口,c参数是自己写的加强类,要自己写,继承

InvocationHandler接口

这句执行完即可获得加强类

package com.dao;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class Test {
    public static void main(String[] args) throws ClassNotFoundException {
        Class [] issues={User.class};
        Userimpl user=new Userimpl();
        User user2= (User)Proxy.newProxyInstance(Test.class.getClassLoader(), issues,new Userprocexy(user));
        System.out.println(user2.add(10,10));
    }
}
class  Userprocexy implements InvocationHandler  //继承invocation接口
{    public Object obj;
    public Userprocexy(Object obj)//应该是传想添加功能的方法的实现类,为了通用,直接接收object类型,这样任何一个类都可以使用这个加强类
    {
        this.obj=obj;//需要先使用构造方法,获得想添加功能的方法的实现类,以能够执行该类的方法
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("在添加前执行"+method.getName());
        Object res= method.invoke(obj,args);//obj是想添加功能的方法的实现类,args是调用时的参数
        System.out.println("在添加后执行"+obj);
        return res;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号