1

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

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

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

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

4

1 回答 1

1

我不认为你可以轻松地在 Java 中打补丁。我认为您可以尝试 AOP,或直接破解该类(因为您将拥有源代码,因为它是 hadoop)。否则我认为反射或字节码修改可能是一种选择,但它们都会非常讨厌。直接破解课程并使用破解的 jar 听起来对我来说是最直接的方法。

顺便说一句嗨:)

于 2013-08-20T15:48:40.320 回答