没有目标对象的Java动态代理?
发布时间:2020-12-15 08:29:43 所属栏目:Java 来源:网络整理
导读:奇怪的问题…… 如何在没有实际拥有目标对象的情况下使用动态代理时,如何使用Java的调用拦截器? 例如,我想创建一个超级对象,它可以代表在运行时指定的十几个接口,而不一定需要一个实现其中任何接口的对象. 基本上这就像大多数动态语言的__call功能一样. 思
奇怪的问题……
如何在没有实际拥有目标对象的情况下使用动态代理时,如何使用Java的调用拦截器? 例如,我想创建一个超级对象,它可以代表在运行时指定的十几个接口,而不一定需要一个实现其中任何接口的对象. 基本上这就像大多数动态语言的__call功能一样. 思考? 解决方法
也许我误解了这个问题(如果是这样,请告诉我!)但是这会让你开始吗?
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Arrays; public class Main { public static void main(final String[] argv) { final Object object; final InvocationHandler handler; final Runnable runnable; final Comparable<Object> comparable; handler = new InvocationHandler() { public Object invoke(final Object proxy,final Method method,final Object[] args) throws Throwable { System.out.println(proxy.getClass()); System.out.println(method); System.out.println(Arrays.toString(args)); return (0); } }; object = Proxy.newProxyInstance(Main.class.getClassLoader(),new Class[] { Runnable.class,Comparable.class,},handler); runnable = (Runnable)object; runnable.run(); comparable = (Comparable<Object>)object; comparable.compareTo("Hello"); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 使用NetBeans 8,但低于Lambda表达式的编译错误
- Java发送邮件,带抄送和附件的代码
- java – 如何按插入顺序迭代Multimap?
- Java中final,finally,finalize三个关键字的区别_动力节点Ja
- java – 使用list.size()或变量多次使用? (局部优化)
- java – 为什么在Hibernate 5中不推荐使用标准查询?
- java – 如何spring-boot:从多模块项目的root pom.xml上运
- java – 如何使用所有位= 1创建一个long值
- Java.io.IOException,“坏文件号”USB连接
- java复习--Web部分