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

如何从Object类的数组中提取游标和整数值?,第1张

概述我有一个方法,它返回一个Objects数组(Java中所有类的父类).数组包含两种类型的数据,你可以看到objArray[0]是一个int;和objArray[1]是一个游标;publicObject[]search_record(StringrollNo){Object[]objArray=newObject[2];SQLiteDatabasedb=this.getWri

我有一个方法,它返回一个Objects数组(Java中所有类的父类).数组包含两种类型的数据,你可以看到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(),不是吗?

总结

以上是内存溢出为你收集整理的如何从Object类的数组中提取游标和整数值?全部内容,希望文章能够帮你解决如何从Object类的数组中提取游标和整数值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存