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

时间:2016-09-28 09:11:33

标签: java compiler-errors type-mismatch

我正在尝试使用电子邮件条件迭代一个表来检索表行中的所有记录。我收到此错误提示

                byte checkCode = r.readByte();             // check code
      System.out.println("checkCode is 0x: " + Integer.toHexString(checkCode));

这是我的尝试:

Type mismatch: cannot convert from element type User to Object[]

请如何检索上面的数组元素

5 个答案:

答案 0 :(得分:3)

该消息告诉您需要知道的所有内容:

此代码:

for(Object[] row : adminList)

说:“我希望该List的每个成员都应该是'Object of array'的类型。”

这听起来有点不对劲。所以,你必须退后一步,重新考虑为什么你首先放下代码!

该列表已声明包含类用户的对象,因此使用它的直接方式是。

for (User user : adminList)

如果你需要什么;那么,为什么你声明 adminList 属于List<User>类型?

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

换句话说:在尝试运行之前学会抓取!

答案 1 :(得分:2)

您获得了List<User>,因此您必须使用循环中的用户对象:

List<User> adminList = _adminDao.getSingleUser(searchName);

for (User row: adminList) {
 //Do anything with the user
}

BTW:_adminDao.getSingleUser不应该返回用户列表。

答案 2 :(得分:1)

首先,您要迭代列表,而不是对象数组。 需要正确的列表参考:

for (User row: adminList)

这可能会在adminList中获得一个名为row(每次迭代)的用户,这是User对象的集合。

其次,如果要获取索引,请使用法线。 (或同时,做)

for (int i=0; i< adminList.size(); i++) {
  System.out.println(" ------------------- ");
        System.out.println("row: " + adminList.get(i));
}

或使用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));

答案 3 :(得分:1)

似乎您正在尝试打印User对象中的所有成员变量。所以:

<VirtualHost *:80>
     ServerAdmin support@yourdomain.com
     ServerName yourdomain.com
     ServerAlias www.yourdomain.com
     DocumentRoot /var/www/html/yourdomain.com/public_html/

   <Directory "/var/www/html/yourdomain.com/public_html">
       AllowOverride All
       Require all granted
   </Directory>

答案 4 :(得分:0)

你的循环应该是:

List<User> adminList = _adminDao.getSingleUser(searchName);

    int i = 0;
    for (User row: adminList) {
        System.out.println(" ------------------- ");
        System.out.println(i" row: " + row);
        i++;
    }

这里它将在循环中为adminList中的每个元素执行代码。