我有一个public Set<ProjectItem> projectItems = new HashSet<ProjectItem>();
可以包含两种类型的类(ProjectItem
它们都是抽象超类)。类是Deliverable
和Task
。我想Deliverable
从Set
. 因此我写这个:
public Set<Deliverable> allDeliverables(){
Set<Deliverable> result = new HashSet<Deliverable>();
for(Iterator<ProjectItem> iter = projectItems.iterator(); iter.hasNext(); iter.next()){
if (iter.next().getClass() == Deliverable.class){
Deliverable del = (Deliverable) iter.next();
result.add(del);
}
}
return result;
}
但这是一个例外——
线程“主”java.lang.ClassCastException 中的异常:edu.Chryb.ProjectManagement.Task 无法转换为 edu.Chryb.ProjectManagement.Deliverable
在行中:Deliverable del = (Deliverable) iter.next();
if 查询中有什么错误吗?
感谢您的每一个帮助。