我有以下Java代码;
List<Person> personList = new ArrayList<Person>();
response = executeQuery(query);
for(Object[] person : response.getRecords()) {
Person per = new Person();
per.setPersonName((String)person[0]);
//Setting other values
personList.add(per);
}
如您所见,我从查询执行中得到了一个响应,并获得了一个对象数组,我正试图在我的自定义类Person
中设置该数组。
我在Person
中有以下设置器;
public void setPersonName(String personName) {
this.personName = personName;
}
现在有一些奇怪的事情发生了。我正确地得到了响应,并且在调试时,如果我检查/观察person[0]
,它会给我适当的值test1
但是当我执行per.setPersonName((String)person[0]);
时,它的设置并不相同
它正在将personName
设置为null
我已经验证了personName
的类型是String
。
我做错了什么吗?
发布于 2013-11-21 08:09:42
我从查询执行中得到一个响应,并获得一个对象数组,我试图在我的自定义类Person中设置该数组。
如果循环返回Object[]
,则循环应如下所示
for(Object obj : response.getRecords()) {
Person per = new Person();
per.setPersonName(/*parse obj to get pserson name*/);
personList.add(per);
}
发布于 2013-11-21 09:05:10
由于您还没有发布response.getRecords()方法的代码,我不能确定,但这可能是问题所在:
如果使用JDBC检索记录,则需要在访问这些行之前调用ResultSet.next()
,因为ResultSet游标最初位于第一行之前;对方法next的第一次调用使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。
https://stackoverflow.com/questions/20115473
复制相似问题