我有一个 public Set<ProjectItem> projectItems = new HashSet<ProjectItem>();
它可以包含两种类型的类( ProjectItem
是它们的抽象父类(super class))。这些类(class)是 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;
}
但这是个异常(exception)——
Exception in thread "main" java.lang.ClassCastException: edu.Chryb.ProjectManagement.Task cannot be cast to edu.Chryb.ProjectManagement.Deliverable
符合:Deliverable del = (Deliverable) iter.next();
if 查询中是否有错误?
感谢您的帮助。
最佳答案
您的代码有点过时了。尝试:
for(Iterator<ProjectItem> iter = projectItems.iterator(); iter.hasNext(); iter.next()){
ProjectItem item = iter.next();
if (item.getClass() == Deliverable.class){
result.add((Deliverable)item);
}
}
关于java - Java从HashSet中获取特定的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16863655/