类型不匹配:不能从元素类型User转换为Object[]



我正在尝试迭代具有电子邮件标准的表,以从表行检索所有记录。我得到这个错误提示

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)

如果不是你需要的;那么,为什么要声明adminListList<User>类型呢?

为了记录:这真的是一个非常基本的 java问题。如果您还不了解这些基本的东西,那么您应该先花一些时间在上学习 java。如果你不理解ClassCastException 是什么意思以及如何处理它,那么使用像Hibernate这样的框架(带有巨大的复杂性!)是绝对没有意义的。

换句话说:先学爬,再学跑!

你得到一个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中的每个元素执行循环中的代码。

最新更新