我想插入类方法之间以动态扩展对象。
我已经知道java.lang.reflect.Proxy的东西,但它太有限了,无法进行真正的插入。
从使用java.lang.reflect.Proxy在java类方法上插入,第一个限制是:
(…)必须通过代理类的实例调用该方法。因此,例如,嵌套方法调用将不会被截获。
最糟糕的一个:
(…)该方法必须已在要代理的对象实现的接口中定义。不能通过未实现接口的类的实例来调用它。
我想在运行时扩展的对象没有实现任何接口,最糟糕的是,我需要覆盖的方法是嵌套的和私有的。
我知道这在Python&C、 上面引用的文章说这是可能的:
本系列的下一篇文章将介绍一些克服这些限制的技术。
很遗憾,我找不到这篇文章。
尝试使用CGLIB:
这是我几年前写的一个教程,它非常简单地介绍了CGLIB:CGLIB介绍
如果您需要更多的电源,请考虑使用AspectJ
希望这能帮助