【发布时间】:2016-06-12 00:39:05
【问题描述】:
编辑:最初是一个让我的工作更轻松的低优先级问题,现在已经成为 Java 巫术中一个非常有趣的练习。谢谢大家的意见!
我正在使用自动生成的 Java 代码(特别是 AnyLogic 生成的代码),它会生成一个名为 onChange() 的方法。我想在调用onChange() 时调用我自己的方法。有没有办法通过反射或其他标准 Java 机制“挂钩”onChange()?
【问题讨论】:
-
您是否尝试过使用 AOP(AspectJ 或 Spring AOP)。您可以有一个方面建议可以在给定切点之前或周围调用给定方法。你可以[在这里找到更多] (docs.spring.io/spring/docs/current/spring-framework-reference/…)
-
如果 onChange 没有钩子,则可能有另一种方法可以通过扩展它或更改配置来完成覆盖。最好使用框架推荐的方式。
-
AOP 也是我的第一个想法,但在这个框架中相当困难:如果记忆有用,它是我们当地大学某人硕士项目的一部分,以便将其集成。不幸的是,我无法覆盖
onChange(),因为自动生成破坏了我编写的方法。我希望软件包的维护者在未来能解决这个问题——我已经纠缠过他们——但我认为我需要在此期间解决一个变通办法。 -
没有人可以回答,除非您向我们提供有关该方法如何“自动生成”的更多信息,您是否使用任何容器等。即使它是第三方库,您仍然可以制作使用 AOP。 AOP 不要求您“覆盖”该方法。当然还有其他选择,例如使用检测代理、使用 javassist 等,但我相信它们都适用于某些我们无法判断它们是否适用于您的情况
-
@DylanKnowles 感谢您的解释;我会考虑的。但它仍然有助于了解 AnyLogic 上下文,因为这是在什么情况下将生成 Java 的起点(从而为问题提供 Java 上下文)。我还不会注销一个更“AnyLogic-y”的解决方案......
标签: java reflection java-8 anylogic