2017-08-25 26 views
0

我在这里使用接口时遇到问题。当我尝试设置列表中的“答案”到一个ArrayList我得到的错误:使用列表接口,其中给出的类型是要通过setter方法实现的接口

的方法setAnswers(列表)在类型QuestionImpl不适用于参数(ArrayList的)

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

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; 
} 

答接口:

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 {...} 
+0

变化'setAnswers(新的ArrayList ());'(所以''而非'') –

回答

2

你的类型参数是错误的。您的方法需要Answer类型的列表,但是您传递的AnswerImpl列表不一样。这是两种不同的类型。你可以通过一个泛型类型参数来解决这个问题。

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