2017-08-25 56 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; 
} 
相關問題