每个类方法的Java回调函数

Die*_*ias 3 java callback

在JAVA中是否有一种方法可以在我的类的每个方法上调用回调函数而无需显式执行调用?

我不想这样做

public void foo()
{
   //some code
   callBackFunction()
} 
Run Code Online (Sandbox Code Playgroud)

我想要做

public void foo()
{
   //some code
} 
Run Code Online (Sandbox Code Playgroud)

然后类认识到它必须调用callBackFunction()

Ben*_*Cox 8

面向方面编程是以半全局方式执行此操作的最简单方法.直接使用AspectJ,或使用类似Spring的IOC容器和支持方面.

基本上你可以做的是定义"切入点",这是一种表达源代码中做某些其他动作的方法.您可以在现有方法实现之前,之后或代替现有方法实现执行该操作(如调用callbackFunction()).

其中还有很多其他有用的功能,但是如果过度使用它会导致很难调试代码.

  • +1"难以调试".我会写一些更像是"你的名字可能被后代诅咒......". (9认同)

Dav*_*low 8

您可以使用反射在运行时检查类并使用所谓的"动态代理"对象包装其所有方法.查看关于反射的官方Java文档以获取示例(搜索"DebugProxy"页面,该页面实际上实现了进入和离开每个方法的回调).