Proxy 示例

Posted 付吉龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Proxy 示例相关的知识,希望对你有一定的参考价值。

 1 package cn.proxy03;
 2 
 3 import java.lang.reflect.InvocationHandler;
 4 import java.lang.reflect.Method;
 5 import java.lang.reflect.Proxy;
 6 import java.util.ArrayList;
 7 import java.util.List;
 8 /**
 9  * 用代理修改list的add方法  判断添加字符串的首字母是否为J开始
10  * @author ASUS
11  *
12  */
13 public class ListProxy {
14 
15     public static void main(String[] args) {
16         //声明被代理的对象
17         final List<String> list = new ArrayList<>();
18         Object object = Proxy.newProxyInstance(ListProxy.class.getClassLoader(),
19                 new Class[]{List.class},
20                 new InvocationHandler() {
21                     
22                     @Override
23                     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
24                         // 限制:如果调用的是add方法,如果添加的是J则接收
25                         if(method.getName().equals("add")){
26                             if(args[0].toString().startsWith("J")){
27                                 list.add(args[0].toString());
28                                 return true;
29                             }else{
30                                 System.err.println("不接受");
31                                 return false;
32                             }
33                         }else{
34                             return method.invoke(list, args);
35                         }
36                     }
37                 });
38         List<String> listAdd = (List<String>) object;
39         new ListProxy().add(listAdd);
40     }
41     
42     public void add(List<String> list){
43         list.add("Jack");
44         list.add("Mary");
45         System.err.println("J开头的字符串个数为:"+list.size());
46     }
47 }

运行结果

以上是关于Proxy 示例的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之代理模式(Proxy)详解及代码示例

python更新pip报错pip._vendor.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme None(示例代码

处理屏幕旋转上的片段重复(带有示例代码)

failed to update local proxy configuration copy: unexpected field "hosts.available"解决(示例代码

LockSupport.java 中的 FIFO 互斥代码片段

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。