2015-04-01 70 views
-1

我想开发一个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; 
    } 
} 

这是家长Holder类

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

*,其中*是错误的,什么是'ParentsHolder'看起来像?这是编译时的错误还是例外?目前你还没有给我们足够的信息。 – 2015-04-01 13:03:56

+0

哪条线路出现此错误? – pcj 2015-04-01 13:11:06

回答

3

你只是使用列表中的“原始类型” 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); 
    } 
} 
+0

但我又有同样的问题! – Sawsen 2015-04-01 13:35:16

+0

你有没有改变它到处?向我们展示修改的代码。 – 2015-04-01 13:38:51

+0

谢谢先生您的帮助:)问题解决:) – Sawsen 2015-04-01 14:02:46

0

变化相应行以下代码:

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

相若方式为儿童类

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