引用
我的疑问:
1、在InvocationHandler中的invoke方法中的那个参数 proxy
不能调用toString、hashCode方法;
虽然可以转型为 实体类,但是 不能 在 method.invoke(obj,args)中使用。
不知道这个参数有什么用???
2、既然proxy不知道怎么用,于是,就自己添加个 setTarget(Object target)方法,注入具体的对象。
public interface InvocationHandler{
Object invoke
(Object proxy, Method method, Object[] args) throws Throwable;
}
此invoke将拦截所有代理的方法调用,包含了继承自Object的方法
1. 可以调用toString()和hashCode()方法的,需要自己在invoke中进行处理如:
Object invoke
(Object proxy, Method method, Object[] args) throws Throwable{
if (method.getName().equals('toString')) {....}
else if (method.getName().equals('hasCode')) {....}
}
实际上你任何执行此方法都是错误的:method.invoke(proxy, argus),注意这里的proxy本身就是代理,如果代理执行invoke,那么还是会被InvocationHandler.invoke拦截的,也就是任何method.invoke(proxy,argus)依然还是对InvocationHandler.invoke的调用
,恭喜从此进入死循环了
2 代理可以是对真实存在的对象进行代理,
所以你需要方法setTarget(),更好的做法是在构造InvocationHandler时输入,如:
new MyInvocationHandler(target);
你可以使用
Object invoke
(Object proxy, Method method, Object[] args) throws Throwable{
if (method.getName().equals('toString') || method.getName().equals('hasCode')) {return method.inoke(target, args);
}
}
3 代理也可以是一个虚幻的对象实例,只是这个实例的所有方法实现在InvocationHandler.invoke
中实现的
分享到:
相关推荐
Java开发规范是编程实践中至关重要的一个方面,它不仅关乎代码的可读性、可维护性和团队协作效率,也直接影响到软件项目的质量和长期发展。本文将深入探讨Java开发规范中的核心原则,以及如何通过遵循这些规范来提升...
RPC java实例 文章包括以下两个部分: RPC基本原理 RPC Java实例讲解 废话不多说,现在讲讲RPC到底是什么 RPC基本原理 RPC全程Remote Procedure Call Protocol,即远程过程调用协议,它是一种通过网络从远程计算机...
标题中的“答复: 一道经典线程面试题的4种解法”暗示了这是一个关于多线程编程的问题,通常在面试中出现,用于评估候选人的并发处理能力。在这个问题中,可能涉及到同步、线程安全、锁机制等关键概念。 在Java中,...
标题中的“答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比(二)”表明本文将深入探讨Java中的MethodHandle概念,并将其与.NET平台上的委托进行对比。MethodHandle是JDK 7引入的一个强大特性,它...
java-adsb 这是Java的Mode S和ADS-B解码库。 它是OpenSky Network项目( )的产品。 它基于以下两个参考: 国际民航组织航空电信附件10第4卷(监视雷达和防撞系统) RTCA DO-260B“ 1090ES的最低运行性能标准(MOPS...
- 肯定答复与否认答复:对一般疑问句的回答,肯定答复用“Yes, + 主语 + 助动词/情态动词。”,否定答复用“No, + 主语 + 助动词/情态动词 + not。” 2. 具体题目解答: - 1. It is fun at school. 否认句:It is...
基于SSM+JSP的高校班级同学录网站Java毕业设计(源码+录像+说明).rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:595】 https://pan.quark.cn/s/b3a97032fae7 【实现...
- 错误处理:优雅地处理错误,提供清晰的错误信息,有助于用户理解问题并修复。 7. **标签“源码”和“工具”** - 源码:可能指的是提供验证功能的PHP代码示例,帮助开发者理解并应用到自己的项目中。 - 工具:...
策略模式:刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开 解决棘手问题,嘿,还别说...比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找两个王婆做代理,表现在程 序上时这样的.
Java Sip 示例源码 SIP(Session Initiation Protocol)是一种用于控制多媒体通信会话(如语音和视频通话)的应用层协议。它被设计用来替代传统的电话系统,并且在VoIP(Voice over IP)领域中广泛应用。Java Sip...
博文链接:https://eric2007.iteye.com/blog/158580
总结来说,答复审查意见通知书是一项技术性很强的工作,需要专利代理人具备深厚的专利法知识,对相关技术领域的深入理解,以及良好的沟通和逻辑推理能力。通过仔细阅读、全面分析审查意见通知书,并撰写出有说服力的...
【冀教版小学英语四年级上册...以上就是冀教版小学英语四年级上册的关键知识点,涵盖了衣物词汇、形容词、反义词、代词使用以及句型和一般疑问句的构成,为学生提供了丰富的学习内容,有助于他们扎实地掌握英语基础。
word分词器java源码描述 Completely是一个 Java 自动完成库。 自动完成涉及根据部分查询预测用户可能键入的单词或短语。 目标是在用户制定查询时提供即时反馈并避免不必要的输入。 性能是一个关键问题,因为用户的...
肯定答复:Yes, there are. 否定答复:No, there aren't. 对于情态动词,如can,否定形式是在其后加"not",一般疑问句则将其提前到句首。例如: 2. 肯定句:Li Ming's father can drive the car. 否定句:Li ...
- 肯定答复:Yes, he is. - 否认答复:No, he isn't. - 对 "is playing basketball" 提问:What is the boy doing? - 对 "The boy" 提问:Who is playing basketball? 2. 同样的句型转换可应用于第二句: - ...
毕业设计javassm高校班级同学录网站设计与实现+jsp源码含文档含教程 后台是ssm框架,页面是jsp,数据库mysql,jdk1.8,开发工具用ecplise、myecplise、sts、idea都可以 高校班级同学录网站实现的功能包括班级校友...
只有1%的报告得到了优先答复。 省级官员在摘要报告中指出,人们报告的健康影响包括:头痛,睡眠不足,烦躁不安以及头和耳朵的响声或压力感。 对健康的影响已有许多报道,包括儿童中的健康影响。 讨论:对于风力...