700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > jdk 动态代理基本例子

jdk 动态代理基本例子

时间:2023-03-22 04:41:10

相关推荐

jdk 动态代理基本例子

独角兽企业重金招聘Python工程师标准>>>

1:基本接口的实现package com.hxkj.test;public interface IUserService {public void start();public void playing();public void end();}package com.hxkj.test;public class UserService implements IUserService {@Overridepublic void start() {System.out.println("开始执行啦---");}@Overridepublic void playing() {// TODO Auto-generated method stubSystem.out.println("正在执行啦---");}@Overridepublic void end() {// TODO Auto-generated method stubSystem.out.println("执行完毕啦---");}}2:代理类的实现package com.hxkj.test;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class MyInvocationHandler implements InvocationHandler {// 目标对象 private Object target; /** * 构造方法 * @param target 目标对象 */ public MyInvocationHandler(Object target) { super(); this.target = target; } @Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 在目标对象的方法执行之前简单的打印一下 System.out.println("------------------before------------------"); // 执行目标对象的方法 Object result = method.invoke(target, args); // 在目标对象的方法执行之后简单的打印一下 System.out.println("-------------------after------------------"); return result;}/** * 获取目标对象的代理对象 * @return 代理对象 */ public Object getProxy() { return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), target.getClass().getInterfaces(), this); } }3:实现测试package com.hxkj.test;public class TestInvocation {public static void main(String[] args) {IUserService iUserService = new UserService();// 实例化InvocationHandler MyInvocationHandler invocationHandler = new MyInvocationHandler(iUserService); // 根据目标对象生成代理对象 IUserService proxy = (IUserService) invocationHandler.getProxy(); // 调用代理对象的方法 proxy.start();proxy.playing();proxy.end();}}

4:测试结果

5:对于代理类的详细的参数详解

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。