Tôi có rất nhiều lớp con của lớp trừu tượng và mỗi trường trong số đó khai báo trường cuối cùng công khai có cùng tên. Tôi đã nghĩ đến việc có trường này trong lớp cha trừu tượng mà không khởi tạo nó và hy vọng rằng mỗi phân lớp sẽ buộc phải khởi tạo nó. Tôi đã nghĩ về điều này bởi vì tất cả các lớp con của lớp trừu tượng đều khai báo một trường String cuối cùng được gọi là UNIQUE_ID, và nó là cần thiết cho mọi phân lớp để khai báo một trường với tên chính xác như vậy.trường tĩnh công khai trong lớp trừu tượng hoặc giao diện
Tôi hy vọng câu hỏi của tôi đủ rõ ràng, nếu không, vui lòng cho tôi biết như vậy.
Có thể điều gì đó tương đương hoặc ít hơn tương đương với việc này sẽ được thực hiện?
EDIT: Mã nói thêm:
lớp trừu tượng của tôi trông giống như:
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";
}
...
}
Một số các lớp con không trừu tượng của cái nhìn lớp trừu tượng như (lưu ý rằng tất cả trong số họ tuyên bố 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";
}
...
}
Một ví dụ khác:
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) {
...
Và mới nhất:
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;
...
}
Vui lòng thêm đoạn mã để làm cho câu hỏi này rõ ràng hơn! – ppeterka
đăng một số mã xin vui lòng –
hy vọng câu trả lời của tôi là hữu ích. không chắc chắn có một bản sửa lỗi nhanh hơn tốt hơn so với triển khai hiện tại. về lâu dài, chuyển từ các trường tĩnh sang một cấu trúc dữ liệu riêng biệt theo dõi siêu dữ liệu có thể là một cải tiến. –