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

时间:2015-04-01 13:02:30

标签: java eclipse e4

我试图开发一个e4应用程序,但我有一个错误:在这部分"错误:类型不匹配:无法从元素类型Object转换为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;
    }
}

这是家长持有人类

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())

2 个答案:

答案 0 :(得分:3)

您只是在列表中使用“原始类型”List,因此Java不知道这是Parent个对象的列表,只能将其视为{{1}的列表}。

您需要使用泛型来指定列表类型 - 只要Object它应该是List

类似于:

List<Parent>

答案 1 :(得分:0)

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

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

类似于Child class

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