我需要從屬性文件獲取屬性值,然後將其傳遞給超類構造函數。但由於super(value);
應該先調用,我應該在哪裏加載文件並獲取屬性值?獲取屬性值並將其傳遞給超類
回答
您需要首先加載屬性文件,您只能在靜態方法中執行此操作。這聽起來像你真的需要一個工廠方法。
public static MyType fromProperties(String filename) {
Properties prop = new Proeprties();
prop.load(filename);
return new MyType(prop.getProperty("name"));
}
您可以使用此方法:
class FooWrapper {
private Foo foo;
public FooWrapper() {
Properties p = ...;
foo = new Foo(p.getProperty("smth"));
}
public Foo getFoo() {
return foo;
}
}
,或者,如果你可以改變美孚,改寫不要在構造函數中使用的字符串,而是利用特殊的init()方法:
class FooWrapper extends Foo {
public FooWrapper() {
Properties p = ...;
foo = new Foo();
foo.init(p.getProperty("smth"));
}
}
富是一個抽象在我的情況下,類。而且爲什麼我應該從我的子類創建Foo的另一個對象?當我的子類被創建時,已經調用了超類的構造函數。無論如何,因爲Foo是抽象的,我不能從任何子類創建它的一個對象。 – aps
您可以在超類中顯式地使用setter方法來設置該值,然後從子類調用該方法進行初始化。
有許多選項,最簡單的是在超類中使用受保護的init(TypeOfValue)方法,或者使用工廠方法而不是子構造函數。
你應該在你的應用程序加載一次您的屬性文件並確定它爲static
公共常量,你可以在你的構造函數直接訪問:
public class Foo {
public static final PropertyFile pFile = ...
public Foo() {
super(pFile.getProperty("..."));
...
}
}
另一種選擇:
public abstract class SuperClassLoad {
private String name;
public void setName(String name) {
this.name = name;
}
public void getName() {
return name;
}
}
public class ClassLoad extends SuperClassLoad {
public ClassLoad() {
super();
Properties prop = new Proeprties();
prop.load(filename);
super.setName(prop.getProperty("name")));
}
}
中所做的那樣,我實際上已經完成了這一步。但我希望所有的子類都將特定變量的值傳遞給超類。不管怎樣,謝謝。 – aps
- 1. 屬性沒有傳遞給其他類
- 2. 將超類的屬性傳遞給子類
- 3. 如何獲取標題值並將其傳遞給spring屬性中的bean屬性?
- 4. TextSwitcher - 獲取樣式屬性並將其傳遞給另一個視圖
- 5. 從jQuery獲取Data-dir值並將其傳遞給PHP
- 6. 將文字值傳遞給div屬性
- 7. 將屬性值傳遞給SuperClass
- 8. 將值傳遞給Django模型屬性
- 9. 將屬性傳遞給msiexec
- 10. 獲取將值傳遞給javascript的值
- 11. 在將屬性傳遞給函數後,獲取屬性的屬性,如參考
- 12. 標記內的其他屬性將值傳遞給函數
- 13. 獲取動態文本的值將其傳遞給輸入值
- 14. 將值傳遞給指令並更改css屬性
- 15. 將無功值傳遞給函數並訪問無功屬性
- 16. 如何獲取在C#中傳遞給T的屬性類型?
- 17. 在jQuery中獲取傳遞給方法的屬性值
- 18. Excel VBA - 將屬性值傳遞給屬性
- 19. Swift:將值從UITableViewCell傳遞給靜態類屬性
- 20. 如何設置類中介值並將其傳遞給esb
- 21. 將屬性傳遞給遞歸模板?
- 22. 如何獲取data-id並將其傳遞給函數?
- 23. 從Bootstrap獲取活動標籤ID並將其傳遞給PHP
- 24. 獲取id並將其傳遞給codeigniter中的UI Modal
- 25. 獲取正文內容並將其傳遞給url
- 26. 如何從response.json獲取數據並將其傳遞給組件?
- 27. 以Cookie格式獲取Cookie並將其傳遞給CookieStore?
- 28. Android將值傳遞給類
- 29. 將值傳遞給WTForms類
- 30. 將值傳遞給Ruby類
然後我調用'super(fromProperties(filename));'在子類構造函數中? – aps
這是第一個選項,在第二個選項中,您不需要執行此操作,因爲您需要的任何值都將由工廠方法加載。 –
但爲什麼不應該在方法之外聲明? – aps