1

我想在类方法之间插入以动态扩展对象。

我已经知道 java.lang.reflect.Proxy 的东西,但它太有限了,无法进行真正的插入。

Using java.lang.reflect.Proxy to Interpose on Java Class Methods,第一个限制是:

(...) 必须通过代理类的实例调用该方法。因此,例如,嵌套方法调用不会被拦截。

最糟糕的一个:

(...) 该方法必须已在由被代理的对象实现的接口中定义。不能通过没有实现接口的类的实例来调用它。

我想在运行时扩展的对象没有实现任何接口,最糟糕的是,我需要覆盖的方法是嵌套的和私有的。

我知道这在 Python 和 C 中相当容易,上面引用的文章说这是可能的:

本系列的下一篇文章将说明一些克服这些限制的技术。

不幸的是,我找不到这篇文章。

4

1 回答 1

3

尝试使用 CGLIB:

这是我几年前写的一个教程,它对 CGLIB 的介绍非常简单:CGLIB intro

如果您需要更多功能,请考虑使用AspectJ

希望这可以帮助

于 2012-01-30T09:10:41.557 回答