私public Set<ProjectItem> projectItems = new HashSet<ProjectItem>();
は2種類のクラスを含むことができる を持っています(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 クエリに何か問題がありますか?
いつも助けてくれてありがとう。