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