簡體   English   中英

類型不匹配:無法從元素類型對象轉換為父對象

[英]Type mismatch: cannot convert from element type Object to Parent

我正在嘗試開發e4應用程序,但是我遇到一個錯誤:在此部分“錯誤:類型不匹配:無法從元素類型對象轉換為父對象”有任何幫助,請提前感謝:)

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

您僅將“原始類型” 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 .....
        }

類似地,針對兒童班

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM