gpt4 book ai didi

java - 使用 List 接口(interface),其中给定的类型是由 setter 方法实现的接口(interface)

转载 作者:行者123 更新时间:2023-12-02 02:38:27 25 4
gpt4 key购买 nike

我在此处使用接口(interface)时遇到问题。当我尝试将列表“answers”设置为 ArrayList 时,出现错误:

QuestionImpl 类型中的 setAnswers(List) 方法不适用于参数 (ArrayList)

对我来说,我似乎想在这种情况下使用接口(interface),这样我就可以稍后指定实现。

public class QuestionImpl  extends QuestionAnswerImpl implements Comparable<Object>, Question {
private List<Answer> answers;
public QuestionImpl(){
setAnswers(new ArrayList<AnswerImpl>());
}
@Override
public void setAnswers(List<Answer> answers) {
this.answers = answers;

}
@Override
public List<Answer> getAnswers() {
// TODO Auto-generated method stub
return answers;
}

应答接口(interface):

public interface Answer {
int i=0;
public int compareTo(Object object1);
public String getListValu(int question);
public void setNum(int i);


}

Answer class info (most of the code is irrelevant here)
public class AnswerImpl extends QuestionAnswerImpl implements
Comparable<Object>, Answer {...}

最佳答案

您的类型参数错误。您的方法需要一个 Answer 类型的列表,但您传递的 AnswerImpl 列表并不相同。这是两种不同的类型。您可以通过使用通用类型参数来解决此问题,例如

@Override
public void setAnswers(List<? extends Answer> answers) {
this.answers = answers;
}

关于java - 使用 List 接口(interface),其中给定的类型是由 setter 方法实现的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883331/

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