谷歌应用引擎代码中的类强制转换异常

时间:2012-03-13 20:24:55

标签: java google-app-engine

我正在尝试查询数据存储并将其转换为用户定义的对象类型。但是,我得到了一个类投射错误。请查看代码

   import com.gwt.samples.shared.List;

   public ArrayList<String> viewLists(String user_id) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    ArrayList<String> res;
    String[] ret;
            Query q=pm.newQuery(List.class);
            q.setFilter("owner_id == useridparam");
            q.declareParameters("String useridparam");

            try
            {
               res=(ArrayList<List>)q.execute(user_id); //error occurs here i guess
            }
            finally
            {
               q.closeAll();
            }
            return res;
         }

发生此问题是因为query.execute返回一个Object,并且无法将其转换为ArrayList类型。但是,我从here

开始关注这个例子

请帮忙

1 个答案:

答案 0 :(得分:2)

我可以建议:

1.删除行

import com.gwt.samples.shared.List;

2.而不是

Query q=pm.newQuery(List.class);

res=(ArrayList<List>)q.execute(user_id); //error occurs here i guess

使用

Query q=pm.newQuery(com.gwt.samples.shared.List.class);

res=(ArrayList<java.util.List>)q.execute(user_id);

当你说“我猜错误发生在这里”时,我认为你可以通过检查相关的异常堆栈跟踪或日志条目来确定。

此外,我刚看到您的数据成员res的数据类型为ArrayList<String>,而您的查询将返回(上面包含我的代码更改)java.util.List<com.gwt.samples.shared.List>

您需要更改查询或res的数据类型才能使其正常运行。

我有一个标准的查询方法。查询返回存储在java.util.List中。然后我做

java.util.List liResult = [My query];
ArrayList alResult = new ArrayList(liResult);

我的方法的Ouside,我将ArrayList投射到ArrayList<[Query data type]>

任何帮助?