JAVA:将侦听器附加到接口实现
我有一个现有的接口:JAVA:将侦听器附加到接口实现,java,Java,我有一个现有的接口: public interface ActionInterface<T> { Result<T> execute(); } public abstract class ActionInterface<T> { public Result<T> execute() { //obtain property value via reflection or similar - it depends on the use
public interface ActionInterface<T> {
Result<T> execute();
}
public abstract class ActionInterface<T> {
public Result<T> execute() {
//obtain property value via reflection or similar - it depends on the use case, it could be included in base class
log.debug(property);
return doExecute();
}
protected abstract Result<T> doExecute();
}
公共接口ActionInterface{
结果执行();
}
和示例实现
public class MyAction<T> implements ActionInterface<T> {
@Override public Result<T> execute() {
file.write(this.property);
return Result();
}
}
公共类MyAction实现ActionInterface{
@重写公共结果执行(){
file.write(this.property);
返回结果();
}
}
我想监听对.execute的调用,并在调用时调用log.debug(obj.property)
。
完成这项工作的最佳方法是什么
请注意,可能会有更多的接口实现-我想听听所有这些实现您有两个选择
public interface ActionInterface<T> {
Result<T> execute();
}
public abstract class ActionInterface<T> {
public Result<T> execute() {
//obtain property value via reflection or similar - it depends on the use case, it could be included in base class
log.debug(property);
return doExecute();
}
protected abstract Result<T> doExecute();
}
公共抽象类ActionInterface{
公共结果执行(){
//通过反射或类似方式获得属性值-这取决于用例,它可以包含在基类中
log.debug(属性);
return doExecute();
}
受保护的抽象结果doExecute();
}
您可以使用@拦截器
,但您如何计划事先知道这是哪个属性?也许在接口中使用抽象的getProperty()
,这样做会更容易,如果我正确理解第二个选项-我们需要修改每个现有的实现来调用ActionInterface方法?不。客户端调用execute()方法。这将调用doExecute
,这是每个具体类都应该实现的方法。