gpt4 book ai didi

java - 使用 for-each 遍历 createSQLQuery 的结果

转载 作者:行者123 更新时间:2023-11-30 04:54:40 24 4
gpt4 key购买 nike

考虑一下:

//members is a table.
String sql="select * from members";

Query query = session.createSQLQuery(sql);
List list = query.list();

/***Ist part**This part is working well.******************************/

for(int j=0;j<list.size();j++){
Object [] obj= (Object[])list.get(j);
for(int i=0;i<obj.length;i++)
System.out.println(obj[i]);
}

/***2nd part********This part is not working.Why???******************/

for( Object[] objArr : list){ //---------->(1)

for(Object m:objArr){

System.out.println(((Member)m).getFirstname());
}
}

我想问的是,为什么语句(1)给出以下错误,尽管 list 中的每个元素都是对象数组,即 Object[]:

compile:

[javac] E:\prac java progs\hiber3\src\Dao.java:45: incompatible types
[javac] found : java.lang.Object
[javac] required: java.lang.Object[]
[javac] for( Object[] objArr : list){
[javac] ^
[javac] 1 error

最佳答案

您的列表声明为 List 。这是一个原始类型,因此 Java 编译器不知道列表中的内容。它只知道它包含 Object 的实例。 ,因为 Java 中的类扩展了 Object。所以

for (Object[] objArr : list)

无法编译,因为您试图分配 Object 类型的对象到 Object[] 类型的变量。需要 Actor 阵容才能做到这一点。

所以,有两种解决方案。您知道该列表实际上包含 Object[]实例,因此您将列表转换为 List<Object[]> :

List<Object[]> list = (List<Object[]>) query.list();
for(Object[] objArr : list) {

或者将列表中的每个元素转换为 Object[] :

for (Object o : list) {
Object[] objArr = (Object[]) o;

关于java - 使用 for-each 遍历 createSQLQuery 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8926237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com