类型不匹配:无法从元素类型对象转换为父对象 [英] Type mismatch: cannot convert from element type Object to Parent

查看:129
本文介绍了类型不匹配:无法从元素类型对象转换为父对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试开发e4应用程序,但是我遇到一个错误:在此部分错误:类型不匹配:无法从元素类型对象转换为父对象有任何帮助,请提前感谢:)

i'm trying to develop an e4 application but i have an error : in this part "error:Type mismatch: cannot convert from element type Object to Parent" any help please thanks in advance :)

@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

You are just using the 'raw type' List for your list so Java does not know that this is a list of Parent objects and can only treat it as a list of Object.

您需要使用泛型来指定列表类型-随处可以找到 List 应该是 List< Parent>

You need to use generics to specify the list type - everywhere you have List it should be 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);
    }
}

这篇关于类型不匹配:无法从元素类型对象转换为父对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆