java.lang.ClassCastException:

来源:互联网 发布:域名实名认证不通过 编辑:程序博客网 时间:2024/06/05 03:53

 今天在调试时遇上这样的一个错误:

Exception in thread "main" java.lang.ClassCastException: java.lang.String at com.zb.hibernate.Test.main(Test.java:24)

目标行是:User u=(User)it.next();

程序代码

Test t=new Test();
Iterator it=t.getUserList().iterator();
while(it.hasNext())
      {
       User u=(User)it.next();   ********
    System.out.println(u.getId()+"   "+u.getUserName()+"   "+u.getUserEmail()+"/n");
      }



我看了一篇关于"类装入问题解密,第 2 部分: 基本的类装入异常"的文章,上面说到:
对于数组类型:目标类必须是数组类型或 java.lang.Object、java.lang.Cloneable 或 java.io.Serializable。 
如果违反了以上任何一条规则,那么类装入器就会抛出 ClassCastException。修复这类异常的最简单方式就是仔细检查对象要转换到的类型是否符合以上提到的规则。

于是我将User类改:

public class User implements java.io.Serializable 

但还是不行,后来在一位朋友的提醒下,我将hql语句改成:from User ,就OK了~
原语句:select userName from User

原语句的返回类型为:java.lang.Object ,所以就出现了上面的错误~