首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android获取SelectorIterator<T,ID>而不是CloseableIterator<T>

Android获取SelectorIterator<T,ID>而不是CloseableIterator<T>
EN

Stack Overflow用户
提问于 2017-03-10 06:41:54
回答 1查看 76关注 0票数 0

我正在试用,但得到了以下错误:

代码语言:javascript
复制
com.j256.ormlite.stmt.SelectIterator cannot be cast to
       com.j256.ormlite.dao.CloseableIterable

这是导致错误的代码;而不是CloseableIterator<Employee>,而是返回SelectorIterator<Employee>

代码语言:javascript
复制
public CloseableIterator<Employee> getEmployeesToSync(Context context){
    DatabaseHelper databaseHelper = new DatabaseHelper(context);
    CloseableIterator<Employee> iterator = null;
    try {
        iterator = databaseHelper.getEmployeesDao().queryBuilder().
            where().
            eq(Employee.IS_SYNCED, false).
            iterator();
    } catch (Exception ex) {
        Log.e(LOG_TAG, ex.getMessage());
    }
    return iterator;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-16 15:36:39

不能将com.j256.ormlite.stmt.SelectIterator转换为com.j256.ormlite.dao.CloseableIterable

我不能百分之百确定为什么会发生这种情况,除非Employee类型是不同的类。通过查看import语句,可以确保代码引用的是同一个类。

这不应该是一个强制转换问题,因为SelectIterator<T, ID>扩展了CloseableIterable<T>,而Where.iterator()返回一个恰好是SelectIteratorCloseableIterator。见 javadocs

我不确定这是否是问题所在,但您需要将CloseableIterator<T>转换为SelectIterator<T, ID>,因为泛型无法推断ID类型。因此,如果您有一个CloseableIterator<Employee>,并且id类型的Employee是一个int,那么您需要将其大小写为SelectIterator<Employee, Integer>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42711933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档