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
...
}
我成为了一个 Base 对象的列表 List<Base>
。
但是我需要同样的列表,但作为 List<SubClass>
。
有没有一种方法可以从 Base 类初始化 Subclass?
示例:
for(Base b: list){
SubClass sub = (SubClass)b; // Thats wrong i know
if(...){
sub.setSelected(true);
}
newList.add(sub);
}
我试图避免手动初始化Base Class每个属性到SubClass。如评论中所要求,我更新了我的问题: 上面的设计只是一个例子。我确切的问题是:
为什么将BaseClass转换为SubClass (因为Subclass扩展自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中不是这种情况?
对我的糟糕英语表示抱歉,谢谢。
List<Base>
字段定义在哪里?是在Base
类本身中吗?您是否可以控制它的声明位置和初始化方式? - Perception