java - Java从HashSet中获取特定的类对象

标签 java class iterator set hashset

我有一个 public Set<ProjectItem> projectItems = new HashSet<ProjectItem>();它可以包含两种类型的类( ProjectItem 是它们的抽象父类(super class))。这些类(class)是 DeliverableTask .我想获得 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/

相关文章:

java - 如何在weka中使用不同的缩放方法

java - 在 Java 中导入自定义类,使用命令行

java - 对象、引用和类。需要帮助理解一些代码

c++ - 将 vector 迭代器传递给模板函数

c++ - 我的程序出现 SIGSEGV 故障

c++ - 从 vector 中获取通用双向迭代器

java - Jersey JSON 处理 : add key-value pair to JsonObject

java - Android:设置手机重启后的闹钟/提醒

PHP - 让您的类完成所有工作而不对使用该类的脚本做太多工作是否可以?

java - 知道何时结束冒泡排序中的循环