java.lang.ClassCastException:java.util.ArrayList无法强制转换为antlr.collections.List

时间:2016-02-04 04:38:30

标签: java list arraylist

如果我不进行类型转换到query.list(); to(List)query.list();它给了我这些错误。

enter image description here  enter image description here

  

java.lang.ClassCastException:java.util.ArrayList无法强制转换为   antlr.collections.List

调用方法

category= new Category();
ArrayList data= (ArrayList) category.getCategoryInfo();

和方法是

public List  getCategoryInfo(){
      Session session = HibernateUtil.openSession();

      String sql = "SELECT category.id as id, category.name,c.name as parent_category FROM category join category as c on c.id=category.parent_id"; 
      SQLQuery query = session.createSQLQuery(sql);
      query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); 
      List data = (List) query.list();
      return data;
}

请帮我解决这段代码的错误。

2 个答案:

答案 0 :(得分:2)

您需要将行List data = (List) query.list();更改为List data = query.list();,因为query.list();始终返回List,因此无需显式转换。

此外,在作业部分,你再次需要在Interface List上进行编程,但是你正在进行具体的课程 - ArrayList

ArrayList data= (ArrayList) category.getCategoryInfo();需要更改为List data= category.getCategoryInfo();

在超类型接口上编程时,需要消除显式转换。

请注意,从List方法返回的getCategoryInfo()接口和在赋值部分写入的接口应该是相同的接口(java.util.Listantlr.collections.List,您可以&#t混合两者)。

自行了解List

返回的query.list();种类

答案 1 :(得分:1)

好像你输入了错误的List类。查看类的导入并将antlr.collections.List替换为java.util.List。