Java中的Proxy对象(代理)

Star

public class Star implements Skill {
    String name;

    public Star(String name) {
        this.name = name;
    }

    @Override
    public void sing() {
        System.out.println("唱歌");
    }

    @Override
    public void jump() {
        System.out.println("跳舞");
    }
}

StarAgent

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class StarAgentProxy {
    public static Skill getProxy(Star s) {
        return (Skill)Proxy.newProxyInstance(s.getClass().getClassLoader(), s.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                System.out.println("表演开始");
                Object rs = method.invoke(s,args);
                System.out.println("表演结束.");
                return rs;
            }
        });
    }
}

posted @   ajajaz  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示