【发布时间】:2014-01-04 13:45:46
【问题描述】:
使用 applicationContext.xml 中的 Answer Bean 填充 Question Bean 使用迭代器迭代答案列表时会引发错误,但使用 For Each 循环可以正常工作。
{
<bean id="answer1" class="com.core.spring.Answer">
<property name="id" value="1"></property>
<property name="answerText" value="Java is a programming language"></property>
<property name="by" value="Ravi Malik"></property>
</bean>
<bean id="answer2" class="com.core.spring.Answer">
<property name="id" value="2"></property>
<property name="answerText" value="Java is a platform"></property>
<property name="by" value="Sachin"></property>
</bean>
<bean id="answer3" class="com.core.spring.Answer">
<property name="id" value="3"></property>
<property name="answerText" value="Java is a platform"></property>
<property name="by" value="Sachin"></property>
</bean>
<bean id="question" class="com.core.spring.Question">
<property name="id" value="1"></property>
<property name="questionText" value="What is Java?"></property>
<property name="answers">
<list>
<ref bean="answer1"/>
<ref bean="answer2"/>
<ref bean="answer3"/>
</list>
</property>
</bean>
}
这是问题的 Bean 类。
{
package com.core.spring;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Question {
private int id;
String questionText;
List<Answer> answers=new ArrayList<Answer>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getQuestionText() {
return questionText;
}
public void setQuestionText(String questionText) {
this.questionText = questionText;
}
public List<Answer> getAnswers() {
return answers;
}
public void setAnswers(List<Answer> answers) {
this.answers = answers;
}
public void displayInfo(){
System.out.println("Question: "+id);
System.out.println(questionText);
System.out.println("Answers");
for(Answer ans:answers){
System.out.print(ans.getId());
System.out.println(": "+ans.getAnswerText());
}
for (Iterator<Answer> ans = answers.iterator(); ans.hasNext();){
System.out.print(ans.next().getId());
System.out.println(": "+ans.next().getAnswerText());
}
/*Iterator<Answer> ans=answers.iterator();
while(ans.hasNext()){
System.out.print(ans.next().getId());
System.out.println(": "+ans.next().getAnswerText());
}*/
}
}**
}
【问题讨论】:
-
为什么说有错误而不贴错误?
-
你在循环中调用了
next()两次... -
是的,现在意识到了,谢谢你的评论。
标签: java spring collections iterator