由於考慮了優雅的解決方案,我的頭很疼。我有一個父類和幾個子類。我的父類聲明並實現了一個方法來檢索屬性,但屬性文件的名稱由子類決定。使用子類的字段執行父方法
我只處理子類的實例。
該方法(在父級中實現)應該使用子類的字段值,但由於我在父類中使用它,我還需要在其中聲明它。
現在,每次我從子類調用方法時,都會使用父類的字段值。
一些簡單的代碼來說明我的問題(請記住:它不是關於功能 - 更多關於設計)。定義字段值的子類,我想用:
public class SubClass extends Parent {
public static final String CONFIG_FILE = "subclass.properties"; // same problem with non-static
public SubClass() {
System.out.println(getProperty("somekey"));
}
}
和父類的定義和實現方法我想使用:
public class Parent {
public static final String CONFIG_FILE = "config.properties"; // same problem with non-static
public String getProperty(String key) {
Properties props = new Properties();
try {
props.load(new FileReader(new File(CONFIG_FILE)));
}
catch (IOException ioe) {
return null;
}
return props.get(key);
}
由於我從子類調用getProperty(..)
,我會期望它使用它正在操作的實例的字段值(「subclass.properties」),而是使用父字段值(「config.properties」)。我獲得了與非靜態字段相同的效果。
這可以解決使用波希米亞和thiago.lenz答案。 –
不,這兩個答案都不適用於該問題。我想避免在子類中一次又一次地實現這個方法,並且我有幾個。 –