我正在尝试迭代具有电子邮件标准的表,以从表行检索所有记录。我得到这个错误提示
Type mismatch: cannot convert from element type User to Object[]
这是我的尝试:
List<User> adminList = _adminDao.getSingleUser(searchName);
for (Object[] row: adminList) {
System.out.println(" ------------------- ");
System.out.println("first row: " + row[0]);
System.out.println("second row: " + row[1]);
}
请我如何检索上述数组元素
消息告诉你所有你需要知道的:
这个代码:for(Object[] row : adminList)
说:"我期望该List的每个成员都应该是'array of Object'类型"。
这听起来很不对。因此,您必须退后一步,重新考虑为什么要将这些代码放在首位!
列表已经声明为包含类User的对象,因此使用它的直接方法是:
for (User user : adminList)
如果不是你需要的;那么,为什么要声明adminList为List<User>
类型呢?
换句话说:先学爬,再学跑!
你得到一个List<User>
,所以你必须在你的循环中使用用户对象:
List<User> adminList = _adminDao.getSingleUser(searchName);
for (User row: adminList) {
//Do anything with the user
}
顺便说一句:_adminDao。getSingleUser不应该返回Users列表
似乎您正在尝试打印User对象中的所有成员变量。所以:
for (User row: adminList) {
System.out.println(" ------------------- ");
System.out.println("first row: " + row.getFirstVariable());
System.out.println("second row: " + row.getSecondVariable());
}
首先是迭代一个列表,而不是对象数组。for需要正确的列表引用:
for (User row: adminList)
这很可能在adminList中获得一个名为row的用户(每次迭代),adminList是User对象的集合。
第二,如果您想获得索引,使用普通的for。(or while, do while)
for (int i=0; i< adminList.size(); i++) {
System.out.println(" ------------------- ");
System.out.println("row: " + adminList.get(i));
}
or With foreach:
for (User row: adminList) {
System.out.println("row: " + row);
}
如果你想打印一些预定义的索引,你甚至不需要循环!
System.out.println(" ------------------- ");
System.out.println("first row: " + adminList.get(0));
System.out.println("second row: " + adminList.get(1));
你的循环应该像:
List<User> adminList = _adminDao.getSingleUser(searchName);
int i = 0;
for (User row: adminList) {
System.out.println(" ------------------- ");
System.out.println(i" row: " + row);
i++;
}
在这里,它将为adminList中的每个元素执行循环中的代码。