JDK动态代理
来源:互联网 发布:linux wps字体库下载 编辑:程序博客网 时间:2024/06/03 06:44
JDK动态代理
使用jdk的动态代理可以为所有实现了接口的对象做代理,如list集合,数据库操作。。
如我们自己创建一个接口实现代理模式
package dynamic;public interface Login{ String login(String name);}
package dynamic;public class LoginImpl implements Login { @Override public String login(String name) { System.out.println("登录"); return name; }}
package dynamic;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.util.Arrays;// jdk动态代理,可为任何实现了接口的类做代理public class InvocationHandlerImpl implements InvocationHandler { // 被代理的真实角色 private Object obj; public InvocationHandlerImpl (Object obj) { this.obj = obj; } /** * * @param proxy 无解 * @param method 被代理的对象接口的方法 * @param args 该方法的参数 * @return 返回该方法的返回值 * @throws Throwable t */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(method); System.out.println(Arrays.toString(args)); Object invoke = method.invoke(obj, args); System.out.println(invoke); return invoke; }}
// 调用
package dynamic;import java.lang.reflect.Proxy;public class Client { public static void main(String[] args) { // 创建被代理的接口实现类的对象 LoginImpl login = new LoginImpl(); // 创建代理对象 不能是直接new,只能返回接口类,不能返回实现类 Login l = (Login) Proxy.newProxyInstance(login.getClass().getClassLoader(), login.getClass().getInterfaces(), new InvocationHandlerImpl(login)); String name = l.hire("登录前处理"); System.out.println(name); }}
阅读全文
0 0
- 代理模式,JDK动态代理
- Java动态代理--jdk代理
- 代理模式-JDK动态代理
- JDK中的动态代理
- JDK动态代理
- JDK动态代理
- JDK动态代理
- jdk动态代理(暂)
- JDK动态代理
- JDK动态代理实例
- jdk 动态代理
- JDK动态代理
- JDK动态代理说明
- jdk动态代理
- JDKDynamicProxy JDK动态代理
- JDK动态代理实现
- JDK 动态代理
- JDK动态代理
- 第11章
- 【最新、最全】GitLab创建项目及使用说明
- 统计学习方法学习笔记(第一章)
- screen lock 无密码登录
- Java之多线程
- JDK动态代理
- 手把手教你搭建 vue 环境
- Mysql学习笔记(一)
- 【转载自nimblewind】Maven本地仓库配置和archiva私服搭建
- Properties文件中文乱码解决
- 网络 一一 HTTP协议"无状态"的状态指什么?
- LeetCode-- Permutations
- CentOS安装Mysql
- C6748_看门狗