博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基于JDK实现动态代理
阅读量:4164 次
发布时间:2019-05-26

本文共 1967 字,大约阅读时间需要 6 分钟。

Java基于JDK实现动态代理

基于JDK实现动态代理例子:

​ 需要代理的接口:

public interface MyCalculator {
/** * 定义参数加法 * @param a * @param b * @return */ int add(int a , int b);}

​ 需要代理的类:

public class MyCalculatorImpl implements MyCalculator {
@Override public int add(int a, int b) {
return a + b; }}

​ 代理类:

import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * @author zb * @date 2020/7/19 10:52 * @Description: */public class CalculatorProxy {
public static Object getInstance(MyCalculatorImpl myCalculatorImpl){
return Proxy.newProxyInstance( CalculatorProxy.class.getClassLoader() // 代理类实现的接口 , myCalculatorImpl.getClass().getInterfaces() , new InvocationHandler() {
/** * 反射方法 * @param proxy 代理对象 * @param method 代理方法 * @param args 方法参数 * @return 方法的返回值 * @throws Throwable */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(">>>>>>>>>> 方法开始执行"); Object invoke = method.invoke(myCalculatorImpl, args); System.out.println("<<<<<<<<<< 方法结束执行"); // 方法返回值 return invoke; } } ); }}

​ 测试类:

public class Main {
public static void main(String[] args) {
MyCalculatorImpl myCalculator = new MyCalculatorImpl(); MyCalculator calculator = (MyCalculator) CalculatorProxy.getInstance(myCalculator); int add = calculator.add(3, 4); System.out.println("add = " + add); }}

测试结果:

>>>>>>>>>> 方法开始执行<<<<<<<<<< 方法结束执行add = 7

文章实例来自于 江南一点雨 spring系列教程

转载地址:http://qhxxi.baihongyu.com/

你可能感兴趣的文章
怎么让UDP可靠?
查看>>
只问初心,无问西东
查看>>
nginx安装参考
查看>>
Redis安装参考
查看>>
我的心花在怒放
查看>>
利用alsa dmix实现混音
查看>>
STUN用于判断NATType的过程及方法
查看>>
AES(高级加密算法)
查看>>
STUN和TURN技术浅析
查看>>
APP远程消息推送过程
查看>>
LibreSSL替代OpenSSL
查看>>
移植openssl到32位的mips核心板上的详细步骤及遇到的问题解决
查看>>
ISO8601和UTC 时间,由秒数转化日期时间,日期到秒数
查看>>
Navicat for MySQL注册码
查看>>
安装SVN不显示图标解决办法
查看>>
NotePad++常用操作和设置
查看>>
C函数:文件移动、复制、重命名和删除
查看>>
C++中引用计数、AddRef、Release
查看>>
《我不是药神》——生如夏花
查看>>
Linux中获取目录可用空间API
查看>>