gpt4 book ai didi

java - 始终在重载构造函数之后执行一些代码

转载 作者:行者123 更新时间:2023-12-02 08:56:38 24 4
gpt4 key购买 nike

我希望在该子类的每个重载构造函数中执行一些代码(例如,“setBackground(Color.BLACK);”)(或者我也可以表示“某些代码”必须在该子类的实例被执行后执行)创建)。但是这个“一些代码”只能在我们的子类内部使用/调用,并且只能使用一次。并且该子类的每个重载构造函数必须始终调用父类(super class)的适当重载构造函数。

public class JLProgressBar extends JProgressBar{

public JLProgressBar(){

super();

}

public JLProgressBar(int orient){

super(orient);

}

public JLProgressBar(int min, int max){

super(min,max);

}

public JLProgressBar(int orient, int min, int max){

super(orient,min,max);

}

public JLProgressBar(BoundedRangeModel newModel){

super(newModel);

}

}

最佳答案

将评论转换为答案以供将来引用。

Java 的 Initialiser blocks应该可以解决问题。这些在调用 super 之后直接注入(inject)到每个构造函数中,这(在您提供的示例中)应该涵盖在适当时间发生的情况。此外,这些只会运行一次,并且保证为创建的每个实例运行(无论是否有人对您的类进行子类化等)。

例如

public class YourJProgressBar extends JProgressBar {

public YourJProgressBar() {
super();
}

{
// Whatever code you want in here, will run immediately after the call
// to 'super' in any given constructor. Note, in cases where the call
// to 'super' is implicit, it will run after that implicit call
// instead of just never running.
this.setValue(10);
}
}

关于java - 始终在重载构造函数之后执行一些代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60450184/

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