public class Base {
//long list of attributes
// no Constructor using fields
// no init methode
// i cannot change this class
}
现在我扩展了基类,如:
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);
}
我尽量避免将 Base 的每个 Attribute 手动初始化Class
到 SubClass
我按照评论中的要求更新了我的问题:上面的设计只是一个例子。我的 QUESTIN 正是:
为什么将 BaseClass 转换为 SubClass (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
属性为空
为什么在java中不是这种情况?
对不起我的英语不好,谢谢