我有很多抽象類的子類,並且它們中的每個都聲明具有相同名稱的公共靜態最終字段。我正在考慮在抽象超類中擁有這個字段而沒有初始化它,並希望每個子類都被迫初始化它。抽象類或接口中的公共靜態最終字段
我在想這個,因爲抽象類的所有子類都聲明瞭一個名爲UNIQUE_ID的公共靜態最終字符串字段,並且每個子類都必須用這個名稱聲明這樣的字段。
我希望我的問題很清楚,如果不是,請告訴我。
能做些什麼或多或少的相當於此?
編輯:程式碼:
我的抽象類是這樣的:
public abstract class ExperimentPanelModel extends Panelizable {
protected String nextButtonText;
protected String backButtonText;
protected String skipButtonText;
protected Properties currentFile;
protected List<Properties> pastFiles = new ArrayList<Properties>();
public ExperimentPanelModel(Properties argcurrentfile, List<Properties> argpastfiles) {
currentFile = argcurrentfile;
pastFiles = argpastfiles;
nextButtonText = "Next";
backButtonText = "Back";
skipButtonText = "Skip";
}
...
}
一些抽象類樣子的非抽象子類(請注意,所有這些聲明public static final String UNIQUE_ID
) :
public class ConfigurationGUI extends ExperimentPanelModel {
public static final String UNIQUE_ID = "ConfigurationGUI";
public static final String DATA_MODIFIED = "DataModified";
Date dateOfLastSession;
int ExperimentalSession;
int ExperimentOrder;
boolean nextButtonEnabled = false;
public ConfigurationGUI(Properties argcurrentfile, List<Properties> argpastfiles) {
super(argcurrentfile, argpastfiles);
nextButtonText = "Confirm";
backButtonText = "Abort";
}
...
}
一個例子更多:
public class Introduction extends ExperimentPanelModel {
public static final String UNIQUE_ID = "Introduction";
public static final String INSTRUCTIONS_XML_FILE = "instructions.xml";
public static final String THIS_INSTRUCTION_PROPERTY = UNIQUE_ID;
private String thisInstructionText = UNIQUE_ID;
Properties readInstructionsProperties = new Properties();
public Introduction(Properties argcurrentfile, List<Properties> argpastfiles) {
...
,最後一個:
public class Instruction1 extends ExperimentPanelModel {
public static final String UNIQUE_ID = "Instruction1";
public static final String INSTRUCTIONS_XML_FILE = "instructions.xml";
public static final String THIS_INSTRUCTION_PROPERTY = UNIQUE_ID;
...
}
請添加片段代碼,使這個問題更清晰! – ppeterka 2013-03-11 16:51:13
發佈一些代碼請 – 2013-03-11 16:51:27
希望我的回答是有幫助的。不確定是否有比當前實施更好的快速修復。從長遠來看,從靜態字段轉移到跟蹤元數據的單獨數據結構可能是一種改進。 – 2013-03-15 14:37:37