public class Base {
//long list of attributes
// no Constructor using fields
// no init methode
// i cannot change this class
}
現在初始化子類我擴展基類,如:java中,從超類
public class subClass extends Base{
private boolean selected;
...
getter und setter
...
}
我成爲基本對象的列表List<Base>
但我需要相同的列表而是作爲List<SubClass>
是有一種方法可以從基類中初始化子類?
例如:
for(Base b: list){
SubClass sub = (SubClass)b; // Thats wrong i know
if(...){
sub.setSelected(true);
}
newList.add(sub);
}
我儘量避免基Class
的每個屬性的手動初始化子類
更新我的問題是在意見中的要求: 上面的設計僅僅是一個例子。我QUESTIN完全是:
爲什麼將BaseClass轉換爲子類(sence Subclass extends BaseClass
)是不可能的?爲什麼Java的不到風度讓我做到以下幾點:
例如:
Class Base{
private String name;
.....
}
Class SubClass extends Base{
private String title;
}
然後
Base b = DBController.getById(...);
SubClass sub = (SubClass)b;
的對象sub
應具備的屬性名稱從對象b
和後title
屬性爲null
爲什麼在java中不是這種情況?
對不起我的英文不好, 感謝
從超類初始化子類 - 爲什麼?這聽起來有些不妥,最壞的情況是危險的。 – 2013-04-04 04:03:27
「列表 」字段在哪裏定義?在'Base'類中呢?你是否能夠控制其聲明的位置以及初始化位置? –
Perception
2013-04-04 04:05:04
我強烈建議你看看「寧願組成比繼承」 - 谷歌它。你會發現一些有趣的討論。我只是這樣說,因爲它看起來像你試圖拼命濫用特權。 – 2013-04-04 04:10:34