Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android或MLite获取SelectorIterator<;T、 ID>;而不是CloseableIterator<;T>;_Java_Android_Ormlite - Fatal编程技术网

Java Android或MLite获取SelectorIterator<;T、 ID>;而不是CloseableIterator<;T>;

Java Android或MLite获取SelectorIterator<;T、 ID>;而不是CloseableIterator<;T>;,java,android,ormlite,Java,Android,Ormlite,我正在试用android Ormlite,但出现以下错误: com.j256.ormlite.stmt.SelectIterator cannot be cast to com.j256.ormlite.dao.CloseableIterable 这是导致错误的代码;它返回的不是SelectorIterator,而是SelectorIterator: public CloseableIterator<Employee> getEmployeesToSync(Conte

我正在试用android Ormlite,但出现以下错误:

com.j256.ormlite.stmt.SelectIterator cannot be cast to
       com.j256.ormlite.dao.CloseableIterable
这是导致错误的代码;它返回的不是
SelectorIterator
,而是
SelectorIterator

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;
}
public closeable迭代器getEmployeesToSync(上下文){
DatabaseHelper DatabaseHelper=新的DatabaseHelper(上下文);
CloseableIterator迭代器=null;
试一试{
迭代器=databaseHelper.getEmployeesDao().queryBuilder()。
where()。
eq(Employee.IS_synched,false)。
迭代器();
}捕获(例外情况除外){
Log.e(Log_标记,例如getMessage());
}
返回迭代器;
}
除非
Employee
类型是另一个类,否则我无法100%确定为什么会发生这种情况。通过查看import语句,我可以确保您的代码引用的是同一个类

这不应该是一个强制转换问题,因为
SelectIterator
扩展了
closeableiteratable
,并返回一个
CloseableIterator
,它恰好是一个
SelectIterator
。看

我不确定这是否是问题所在,但您需要将
CloseableIterator
转换为
SelectIterator
,因为泛型无法推断ID类型。所以如果你有
CloseableIterator
并且
Employee
的id类型是
int
那么您需要将其设置为
SelectIterator

将结果转换为
SelectorIterator
解决了问题;这很奇怪。我的方法返回
CloseableIterator
,但我必须将其转换为
SelectorIterator。SelectIterator Employees=(SelectIterator)EmployeesProvider.getInstance().getEmployeesToSync(getContext())哪一行给出了该错误?这是运行时错误吗?你能发布完整的异常吗?这是一个运行时错误,我已经发布了错误(没有相关的stacktrace)。顺便说一句,我刚刚检查了
getEmployeesToSync
方法的返回类型,它的类型是:SelectorIterator而不是
CloseableIterator
谢谢,我在某个地方放了一个代码来帮助您重现这个问题。
com.j256.ormlite.stmt.SelectIterator cannot be cast to
   com.j256.ormlite.dao.CloseableIterable