问题标签 [invocationhandler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java - 创建一个调用处理程序?
我正在尝试实现一个生成对象并拦截所有公共方法的工厂类。
我试图在这里调用 2 种方法。1:已经调用的方法 2:我的基础中的一个方法。知道如何实现这一目标吗?
我的抽象类:
annotations - 嵌套的 Jsr 303 验证注解
我想使用类级别的注释约束。但是我无法让内部约束自动验证。我想帮助一部分,将验证组纳入这项技术。
我目前像这样触发约束。
然而,这显然很糟糕。我最终将通过调用 AnnotationInvocationHandler.invoke() 方法来重构以触发 isValid 方法,但我离那还有一点点。
我的问题是所有 ConstraintB 实例都传递到我的 ConstraintA 中。我希望只将具有适当组的那些传递给 ConstraintA。我怀疑这种能力是否存在,那么我如何确定哪些组需要触发,哪些不需要?
我在调试中没有看到任何指定应该触发哪些组的对象?
有任何想法吗?
java - 动态代理:如何处理嵌套方法调用
我正在尝试学习 Java 中的动态代理。
我知道它们是如何工作的,但我找不到解决我的问题的方法:给定一个接口及其实现方法 a()、b() 和 c() 嵌套在另一个中(假设 a() 调用 b( ) 调用 c()),我想代理我的对象来记录对方法的每次调用。
所以我对我的 InvocationHandler 进行了编码,例如 invoke() 方法在执行之前打印了一条日志行。
但是当我调用 proxy.a() 时,只记录了方法 a() 的调用,而不是整个方法链。
我错过了什么?代理的目标是否必须是代理本身?
android - android 通用 SQLite 数据库
我开发了一个小型 java.lang.reflect.InvocationHandler 拦截方法调用(来自 json webservice)并将结果缓存到本地 SQLite db。如果没有互联网连接,则从本地缓存中读取结果。
一切正常;我的问题如下:
拦截的每个方法都可以返回不同的实体,我使用反射将每个实体保存在不同的表上。我事先不知道我需要创建的所有表,所以每次我创建一个 SQLiteOpenHelper “如果不存在则创建表 {ENTITY_NAME}”,并且每次我将数据库版本增加 1 时调用 onUpgrade 方法.
这适用于开发环境,但我一点也不喜欢。
有人可以推荐一个更好的解决方案来用新表更新数据库吗?
谢谢你
java - 在 InvocationHandler 中设置代理对象的实例变量
在 Proxy 对象(实现的对象java.lang.reflect.InvocationHandler
)中,我试图在代理对象中设置一个实例变量。
如下所示:
这安全吗?
编辑:
实际代码:
Edit2 : 代理对象是从 GWT 客户端调用的,该客户端同时调用同一代理对象的多个方法。发生这种情况时,我让会话实例字段(代理类)以意想不到的方式关闭和打开。
java - 在没有代理类的情况下使用方面注入 InvocationHandlers
我想创建一个类,它使用日志信息(例如,之前/之后的语句)代理对其超类的所有方法调用。
但是,使用此类的框架将通过 new (..) 调用加载它,或者通过其他反射机制加载它,因此我不能使用代理语义来启动该类。
有没有办法让 new 和 newInstance() 操作在所有情况下都使用代理 - 还是我们必须使用代理 API 显式创建 InvocationHandler 类的实例?
具体来说:我正在调试一个分布式框架,它已经有自己的方式在运行时从 XML 文件创建类实例(hadoop - mapreduce)。
java - 如何在java中拦截静态方法
类测试有一个静态方法“说”,我怎样才能截获这个静态方法?有没有办法使用 InvocationHandler 工作?
提前致谢
java - 在 Jersey ResourceMethodInvocationHandlerProvider 中引发异常
基于此线程在 Jersey 中注册自定义 ResourceMethodInvocationHandler,我能够在解组 JSON 后拦截 Jersey 资源方法调用。
但是在调用方法之前,如何在 MyInvocationHandler 中基于某些逻辑(例如:禁止异常)抛出自定义异常。当我这样做时,我收到 500 错误javax.servlet.ServletException
:
使用 500 错误代码而不是 403 禁止出现以下错误
java - 使用调用处理程序打开和关闭 SQL 会话
我正在使用 Mybatis 为数据库制作 CRUD 应用程序,并且由于我的所有方法在打开和关闭 SQL 会话时都包含重复代码,因此我想使用调用处理程序来最小化代码重复。几乎我所有的方法看起来都是这样的:
我的问题是如何正确编写和调用调用处理程序,记住应用程序保持线程安全?
java - JAVA:InvocationHandler 相对于接口实现的优势是什么?
今天在课堂上,我们讨论了 Java 编程中的反射。今天课程的一部分是关于在 Java 中使用InvocationHandler,而不仅仅是实现一个接口。当我问老师使用调用处理程序有什么好处时,没有一个明确的答案。所以假设我们有一个接口插件
您可以在Multiply类中轻松实现此接口
那为什么我更喜欢使用InvocationHandler的另一个实现呢?
提前致谢 :)