类型不匹配:无法从元素类型 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 .....
}
我正在尝试开发一个 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 .....
}