类型不匹配:无法从元素类型 Object 转换为 Parent

Type mismatch: cannot convert from element type Object to Parent

我正在尝试开发一个 e4 应用程序,但我有一个错误:在这部分 "error:Type mismatch: cannot convert from element type Object to Parent" 任何帮助请提前致谢:)

@Creatable
@Singleton
public class TreeControl {
    ParentsHolder parentholder = new ParentsHolder();

    public Parent parentExists(String str) {
        for (Parent p : parentholder.getParents())
            if (p.getTag().equals(str))
                return p;
        return null;
    }

    public Child childExists(String p, String c) {
        Parent parent = parentExists(p);
        if (parent != null)
            for (Child child : parent.getChildren())
                if (child.getTag().equals(c))
                    return child;
        return null;
    }
}

这是家长持有人class

public class ParentsHolder extends Model {
    List parents = new ArrayList();

    public List getParents() {
        return parents;
    }

    public void setParents(List parents) {
        firePropertyChange("parents", this.parents, this.parents = parents);
    }

        public void addParent(Parent p) {
            List newlist = new ArrayList<>(parents);
            newlist.add(p);
            setParents(newlist);
        }
    }

错误在这一行

for (Parent p : parentholder.getParents())

和这一行:

   for (Child child : parent.getChildren())

您只是将 'raw type' List 用于列表,因此 Java 不知道这是 Parent 对象的列表,只能将其视为Object.

列表

您需要使用泛型来指定列表类型 - 无论您有什么 List,它都应该是 List<Parent>

所以像这样:

public class ParentsHolder extends Model {
    List<Parent> parents = new ArrayList<>();

    public List<Parent> getParents() {
        return parents;
    }

    public void setParents(List<Parent> parents) {
        firePropertyChange("parents", this.parents, this.parents = parents);
    }

    public void addParent(Parent p) {
        List<Parent> newlist = new ArrayList<>(parents);
        newlist.add(p);
        setParents(newlist);
    }
}

将相应行更改为以下代码:

for(Object p : parentholder.getParents())
      {
          Parent p1= (Parent)p;
           //your code .....
        }

同样适用于儿童 class

 for(Object p : parentholder.getParents())
      {
          Child child= (Parent)p;
           //your code .....
        }