问题标签 [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.

0 投票
2 回答
2077 浏览

java - Java - 创建一个调用处理程序?

我正在尝试实现一个生成对象并拦截所有公共方法的工厂类。

我试图在这里调用 2 种方法。1:已经调用的方法 2:我的基础中的一个方法。知道如何实现这一目标吗?

我的抽象类:

0 投票
1 回答
951 浏览

annotations - 嵌套的 Jsr 303 验证注解

我想使用类级别的注释约束。但是我无法让内部约束自动验证。我想帮助一部分,将验证组纳入这项技术。

我目前像这样触发约束。

然而,这显然很糟糕。我最终将通过调用 AnnotationInvocationHandler.invoke() 方法来重构以触发 isValid 方法,但我离那还有一点点。

我的问题是所有 ConstraintB 实例都传递到我的 ConstraintA 中。我希望只将具有适当组的那些传递给 ConstraintA。我怀疑这种能力是否存在,那么我如何确定哪些组需要触发,哪些不需要?

我在调试中没有看到任何指定应该触发哪些组的对象?

有任何想法吗?

0 投票
2 回答
1986 浏览

java - 动态代理:如何处理嵌套方法调用

我正在尝试学习 Java 中的动态代理。

我知道它们是如何工作的,但我找不到解决我的问题的方法:给定一个接口及其实现方法 a()、b() 和 c() 嵌套在另一个中(假设 a() 调用 b( ) 调用 c()),我想代理我的对象来记录对方法的每次调用。

所以我对我的 InvocationHandler 进行了编码,例如 invoke() 方法在执行之前打印了一条日志行。

但是当我调用 proxy.a() 时,只记录了方法 a() 的调用,而不是整个方法链。

我错过了什么?代理的目标是否必须是代理本身?

0 投票
1 回答
1033 浏览

android - android 通用 SQLite 数据库

我开发了一个小型 java.lang.reflect.InvocationHandler 拦截方法调用(来自 json webservice)并将结果缓存到本地 SQLite db。如果没有互联网连接,则从本地缓存中读取结果。

一切正常;我的问题如下:

拦截的每个方法都可以返回不同的实体,我使用反射将每个实体保存在不同的表上。我事先不知道我需要创建的所有表,所以每次我创建一个 SQLiteOpenHelper “如果不存在则创建表 {ENTITY_NAME}”,并且每次我将数据库版本增加 1 时调用 onUpgrade 方法.

这适用于开发环境,但我一点也不喜欢。

有人可以推荐一个更好的解决方案来用新表更新数据库吗?

谢谢你

0 投票
1 回答
875 浏览

java - 在 InvocationHandler 中设置代理对象的实例变量

在 Proxy 对象(实现的对象java.lang.reflect.InvocationHandler)中,我试图在代理对象中设置一个实例变量。

如下所示:

这安全吗?

编辑

实际代码:

Edit2 : 代理对象是从 GWT 客户端调用的,该客户端同时调用同一代理对象的多个方法。发生这种情况时,我让会话实例字段(代理类)以意想不到的方式关闭和打开。

0 投票
1 回答
153 浏览

java - 在没有代理类的情况下使用方面注入 InvocationHandlers

我想创建一个类,它使用日志信息(例如,之前/之后的语句)代理对其超类的所有方法调用。

但是,使用此类的框架将通过 new (..) 调用加载它,或者通过其他反射机制加载它,因此我不能使用代理语义来启动该类。

有没有办法让 new 和 newInstance() 操作在所有情况下都使用代理 - 还是我们必须使用代理 API 显式创建 InvocationHandler 类的实例?

具体来说:我正在调试一个分布式框架,它已经有自己的方式在运行时从 XML 文件创建类实例(hadoop - mapreduce)。

0 投票
0 回答
2553 浏览

java - 如何在java中拦截静态方法

类测试有一个静态方法“说”,我怎样才能截获这个静态方法?有没有办法使用 InvocationHandler 工作?

提前致谢

0 投票
0 回答
411 浏览

java - 在 Jersey ResourceMethodInvocationHandlerProvider 中引发异常

基于此线程在 Jersey 中注册自定义 ResourceMethodInvocationHandler,我能够在解组 JSON 后拦截 Jersey 资源方法调用。

但是在调用方法之前,如何在 MyInvocationHandler 中基于某些逻辑(例如:禁止异常)抛出自定义异常。当我这样做时,我收到 500 错误javax.servlet.ServletException

使用 500 错误代码而不是 403 禁止出现以下错误

0 投票
1 回答
825 浏览

java - 使用调用处理程序打开和关闭 SQL 会话

我正在使用 Mybatis 为数据库制作 CRUD 应用程序,并且由于我的所有方法在打开和关闭 SQL 会话时都包含重复代码,因此我想使用调用处理程序来最小化代码重复。几乎我所有的方法看起来都是这样的:

我的问题是如何正确编写和调用调用处理程序,记住应用程序保持线程安全?

0 投票
3 回答
3969 浏览

java - JAVA:InvocationHandler 相对于接口实现的优势是什么?

今天在课堂上,我们讨论了 Java 编程中的反射。今天课程的一部分是关于在 Java 中使用InvocationHandler,而不仅仅是实现一个接口。当我问老师使用调用处理程序有什么好处时,没有一个明确的答案。所以假设我们有一个接口插件

您可以在Multiply类中轻松实现此接口

那为什么我更喜欢使用InvocationHandler的另一个实现呢?

提前致谢 :)