gpt4 book ai didi

java - 如何从 Object 类的数组中提取游标和整数值?

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:00 25 4
gpt4 key购买 nike

我有一个返回对象数组的方法(Java 中所有类的父类)。数组包含 2 种类型的数据,如您所见,objArray[0] 是一个 int;objArray[1] 是一个游标;

public Object[] search_record(String rollNo) {

Object[] objArray = new Object[2];

SQLiteDatabase db = this.getWritableDatabase();

Cursor cur = db.rawQuery("SELECT * FROM " + TABLE_NAME
+ " where roll_no = ?", new String[] { rollNo });
int count = cur.getCount();

objArray[0] = count;
objArray[1] = cur;

Log.i("Records count", count + "");

return objArray;

}

现在我无法将这些值提取回原始值即 int 和 cursor。我得到这样的数组。

Object[] objArray = dbHelper.search_record("08cs18");
int x = ((Integer) objArray[1]).intValue();
Cursor cursor = (Cursor) objArray[0];

但应用程序因 classCastException 而崩溃

我认为从技术上讲这是可能的。

最佳答案

对我来说看起来很简单。看看你的声明:

objArray[0] is a int; and objArray[1] is a cursor;

然后是代码:

Object[] objArray = dbHelper.search_record("08cs18");
int x = ((Integer) objArray[1]).intValue();
Cursor cursor = (Cursor) objArray[0];

您以错误的方式对待它们 - objArray[1] 是整数,而 objArray[0] 是光标。只需切换索引即可。

或者,最好...创建您自己的类来封装“游标和计数”:

public final class CursorAndCount {
private final int count;
private final Cursor cursor;

public CursorAndCount(int count, Cursor cursor) {
this.count = count;
this.cursor = cursor;
}

public int getCount() {
return count;
}

public int getCursor() {
return cursor;
}
}

然后您可以更改 search_record(应称为 searchRecord)以返回 CursorAndCount - 调用代码将立即更具可读性.

请注意,既然您是从游标获取计数,为什么不直接返回游标呢?调用者当然可以自己使用 Cursor.getCount(),不是吗?

关于java - 如何从 Object 类的数组中提取游标和整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15819106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com