为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA_动态代理AOP切面编程

标签:
Java

package staticProxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface Human {    void info();    void fly();}// 被代理类class SuperMan implements Human {    public void info() {        System.out.println("我是SuperMan!");    }    public void fly() {        System.out.println("I believe I can fly!");    }}class HumanUtil {    public void method1() {        System.out.println("============方法一============");    }    public void method2() {        System.out.println("============方法二============");    }}class MyInvocationHandler implements InvocationHandler {    Object obj;// 被代理类对象的一个声明    public void setObject(Object object) {        this.obj = object;    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        HumanUtil h = new HumanUtil();        h.method1();        Object returnVal = method.invoke(obj, args);        h.method2();        return returnVal;    }}class MyProxy {    // 动态的创建一个代理类的对象    public static Object getProxyInstance(Object obj) {        MyInvocationHandler handler = new MyInvocationHandler();        handler.setObject(obj);        return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), handler);    }}public class DynamicProxyAOP {    public static void main(String[] args) {        SuperMan man = new SuperMan();//创建一个被代理类的对象        Object obj = MyProxy.getProxyInstance(man);//返回一个代理类的对象        Human hu = (Human)obj;        hu.info();//通过代理类的对象调用重写的抽象方法        System.out.println();        hu.fly();    }}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消