gpt4 book ai didi

java - Java 泛型有没有办法采用需要实现 2 个接口(interface)的泛型参数?

转载 作者:搜寻专家 更新时间:2023-11-01 01:03:34 26 4
gpt4 key购买 nike

假设我有这段代码 -

public interface ParentInterface1 {
public List<? extends ChildInterface1> getChildren();
public void setChildren(List<? extends ChildInterface1> children);
}
public interface ParentInterface2 {
public List<? extends ChildInterface2> getChildren();
public void setChildren(List<? extends ChildInterface2> children);
}
public interface ChildInterface1 {
public String getField();
public void setField(String field);
}
public interface ChildInterface2 {
public String getField();
public void setField(String field);
}
public class LParentImpl implements ParentInterface1, ParentInterface2 {
private List<ChildImpl> list;
public List<ChildImpl> getChildren() {
return list;
}
public void setChildren(List<... wants to accept ChildImpl, which
implements ChildInterface1 & ChildInterface2> children) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
public class ChildImpl implements ChildInterface1, ChildInterface2 {
private String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
}

有没有一种方法可以使 ParentImpl 类中的 setChildren() 工作,而无需从接口(interface)和实现中完全删除通用类型?

我想做类似的事情-

public void setChildren(List<? extends ChildInterface1 & ChildInterface2> children) 

这种接口(interface)/实现结构对非泛型类型有效,但似乎泛型运行时删除的某些方面可能使这不可能?还是我错过了一些神奇的语法?

编辑:使用列表 产生这个编译错误 -

...\ParentImpl.java:20: > expected
public void setChildren(List<? extends ChildInterface1 & ChildInterface2> children) {

最佳答案

您可以指定一个方法,该方法采用实现这两个接口(interface)的对象,如下所示:

public <T extends IFirst & ISecond> void doSomething(T obj) {}

但是,这在您的示例中并不重要,因为您的两个子接口(interface)都指定了相同的方法。

关于java - Java 泛型有没有办法采用需要实现 2 个接口(interface)的泛型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1141068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com