【重点:动态代理】创建一个类MyProxyManger调用getProxy即可以创建一个代理类
来源:互联网 发布:零基础学php要多久 编辑:程序博客网 时间:2024/06/05 11:16
代码实现
import java.lang.reflect.Constructor;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.util.ArrayList;import java.util.Collection;public class Test2 {public static void main(String[] args) throws Exception{Collection collection= (Collection) new MyProxyManger(new ArrayList(),new MyAdvice()).getProxy();collection.add("xiaozhi");collection.add("xiaozhi");collection.remove("xiaozhi");collection.size();}}class MyProxyManger{private Object target;private Advice advice;public MyProxyManger(Object target, Advice advice) {super();this.target = target;this.advice = advice;}public Object getProxy() {return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {advice.beforeMehotd();System.out.println(method.getName());Object object=method.invoke(target, args);advice.afterMehotd();return object;}});}}
Advice
public interface Advice {public abstract void beforeMehotd();public abstract void afterMehotd();}
MyAdvice
public class MyAdvice implements Advice {@Overridepublic void beforeMehotd() {System.out.println("-----------------我是方法前调用的!-----------------");}@Overridepublic void afterMehotd() {System.out.println("-----------------我是方法后调用的!-----------------");}}
运行结果
0 0
- 【重点:动态代理】创建一个类MyProxyManger调用getProxy即可以创建一个代理类
- java创建动态代理类
- 【动态代理】使用构造方法创建代理类、使用 newProxyInstance.newProxyInstance()创建代理类
- Spring系列(1)--创建动态代理类
- 动态代理类的创建实例
- Spring系列(1)--创建动态代理类
- Spring系列(1)--创建动态代理类
- 创建动态代理服务
- 创建动态代理服务
- 创建动态代理
- Java动态代理-创建动态类的实例对象及调用其方法
- C# 动态创建一个类
- python 动态创建一个类
- 11.2 创建动态代理实例即调用其方法
- 创建动态类及查看代理方法列表信息
- 黑马程序员 Java创建动态代理类实现Aop编程
- 使用Cglib创建动态代理
- 【Java进阶-Java动态代理与AOP】03 创建动态类的实例对象及调用其方法
- ubunt下插上耳机后音箱才有声音的解决办法
- tomcat配置
- 利用多线程模拟卖票的功能
- 高手速成android开源项目【View篇】
- 在64位Ubuntu下面使用android NDK编译nginx
- 【重点:动态代理】创建一个类MyProxyManger调用getProxy即可以创建一个代理类
- Maven系列之附录A-maven插件配置
- Android ActionBar入门
- 说说Android桌面(Launcher应用)背后的故事(三)——CellLayout的秘密
- Struts2学习(第六篇)——获取servletAPI和封装表单数据
- 哈尔滨理工大学第四届ACM程序设计竞赛F: 背包
- 判断单链表中环的长度等问题
- Codeforces 53A Autocomplete
- 说说Android桌面(Launcher应用)背后的故事(四)——揭秘Workspace