gpt4 book ai didi

java - 如何从抽象类强制执行方法?

转载 作者:行者123 更新时间:2023-11-30 08:19:01 24 4
gpt4 key购买 nike

假设我们有以下类:

public class B extends A{
@PostConstruct
public void setUp(){
a = new XYZ();
addListener();
}
}

public abstract class A{
X a;

public void addListener(){
a.addChangeListener();
}
}

在类 A 的任何实现中,都应该提供“a”属性的初始化。让我们假设每个 X 实现都必须重写 addChangeListener 并且注册监听器对于 A 的每个实现都是基础和必要的。有没有办法让 A 类后续实现的开发人员免于每次记住这个“addListener”调用,只需将它以某种方式在 A 中忘记了它?提前致谢。

最佳答案

我同意@chrylis 的观点,在 A 上使用 @PostConstruct 而不是 A 的每个子类。(注意 spec 表示只能以这种方式注释 1 种方法。

类似于:

public interface X {
void addChangeListener();
}

public abstract class A {
X a;

protected abstract X newX();

protected void setUp() {}

@PostConstruct
public void init() {
a = newX();
a.addChangeListener();
setUp();
}
}

这允许强制构造子类,使实现者不必记住 addListener() 调用,同时仍然允许他们执行特定于类的初始化。

关于java - 如何从抽象类强制执行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com