java-为什么网上很多文章说 Cursor是一行的集合?明明是一个接口

问题描述

为什么网上很多文章说 Cursor是一行的集合?明明是一个接口
http://www.2cto.com/kf/201109/103163.html
抄来抄去,转来转去,基本就上面链接里这个文章,说Cursor是每行的集合。
android 官方api是这么描述Cursor的:“This interface provides。。。。”这是一个接口啊,所以是我理解太肤浅还是网上的文章描述不够专业?

另外在进行数据库操作时,会有类似下面的语句:

Cursor cursor = db.query(.....)

此处db是SQLiteDatabase的一个实例,调用query方法返回一个cursor实例,但是。。。Cursor不是接口吗?接口怎么有实例了?
于是我又迷茫了。。。求指点

还有一个问题,既然是接口,我通过android studio查看Cusor时,它的方法怎么都没有加“abstract”。。。。

解决方案

Implementations should subclass AbstractCursor.
上面的一句很明显了,你看到的Cursor实例其实都是集成自AbstractCursor类的实例。
接口本身不能有自己的实例,但是实现类就可以了,这里的实例都是针对实现类即Implementations说的了。
楼主好细心啊。

解决方案二:
Cursor 是行的集合,这只是一种说法,为了大家好理解,而不是为了专业。它实际上是什么,你按 Android 官方的理解是对的。

接口,不能被直接实例化,这是接口的概念就已经确定的。Cursor 的具体定义呢,应该是已经定义了可实例化的类,如继承自 AbstractCursor 或其它。
最好是只找到 Cursor 的声明或定义看看,我无法打开 Android 的官网,所以没有看到。

解决方案三:
Cursor 是每行的集合。
使用 moveToFirst() 定位第一行。
你必须知道每一列的名称。
你必须知道每一列的数据类型。
Cursor 是一个随机的数据源。
所有的数据都是通过下标取得。

解决方案四:
我觉的说实在的,就是翻译过来没翻译好,有的书里直接翻译成游标,天然的汉语很少能正确的表达这个概念,还是你看英文文档怎么理解就好

解决方案五:
这些说法并不矛盾,只是各有侧重,可以这样把他们统一起来:
1、Cursor是访问数据的API
2、这个访问接口是用类来实现的
3、Cursor这个接口的实现类的数据是数据库的一个行的集合。

解决方案六:
父类引用可以指向子类实例;接口引用也可以指向实现了接口的类的实例。调用的方法则依据具体实例!

解决方案七:
和 Closeable 的声明有关系

解决方案八:
这个问题,我也迷茫,cursor 是个接口,那么通过databaseContentResolver 查询出来的数据集到底存放在哪里? 我通过追 ContentResolver.query() 方法,只能找到
CursorWrapperInner wrapper = new CursorWrapperInner(qCursorstableProvider != null ? stableProvider : acquireProvider(uri));
stableProvider = null;
qCursor = null;
return wrapper;
而ContentResolver.query() 的返回类型是cursor 而CursorWrapperInner 是cursor 的实现类。
private final class CursorWrapperInner extends CrossProcessCursorWrapper {....}

public class CrossProcessCursorWrapper extends CursorWrapper implements CrossProcessCursor {...}

public class CursorWrapper implements Cursor {...} 这里可以追到 CursorWrapperInner 是cursor 的实现类 而具体的数据时如何的还是不明白

时间: 2024-09-30 15:28:53

java-为什么网上很多文章说 Cursor是一行的集合?明明是一个接口的相关文章

Java基础:初学者Java语言入门精典文章

初学 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习Java的过程中主要围绕以下几个方面来学习: 1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java. 2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以.要注意,即便对一个简单的例子也要有耐心去琢磨.调试.改动. 3.在学习的

安全-如何在互联网上发布文章并隐藏自己的IP

问题描述 如何在互联网上发布文章并隐藏自己的IP 我想在网上发表文章,但是经常会被人查到IP,感觉很不安全,如何隐藏自己的IP不被别人查到呢?听说过用代理服务器,但是不太明白,求高手帮忙解答. 解决方案 同问,代理服务器网上很多,搜一个地址,然后IE设置一下代理就OK了.相当于有个服务器中转一下. 解决方案二: 你可以使用vpn访问 并发布 就没这个问题了 解决方案三: 你搜索下zaixiandaili,然后去发布就可以 解决方案四: 用vpn,连上后发布就是vpn服务器的地址 解决方案五: 之

java自习网上常用资料收集

java自习网上资料收集,自学java.转java可能常用到的写文章,例如排序.正则.SpringMVC Java:初学 Java,遇到的问题及解决方案小结 http://www.cnblogs.com/happyframework/p/3349917.html 用Java集合中的Collections.sort方法对list排序的两种方法: http://www.open-open.com/lib/view/open1322614659562.html http://blog.csdn.net

java,有很多程序可以在运行的时候下载最新版本,然后下次启动时,自动切到新版,是怎么实现的

问题描述 java,有很多程序可以在运行的时候下载最新版本,然后下次启动时,自动切到新版,是怎么实现的 下载文件没问题,可是,程序正在运行,不可以删除文件,新的文件怎么覆盖旧文件 解决方案 http://download.csdn.net/download/ycb1689/4651910 不可以删除,但是可以对运行的程序改名

在java中,有没有什么办法可以用循环的方法可以初始化很多对象到一个对象数组或者是集合当中去

问题描述 在java中,有没有什么办法可以用循环的方法可以初始化很多对象到一个对象数组或者是集合当中去 如上所述,我想要把一系列的对象初始化到一个数组或者是集合当中去,这个该怎么实现? 解决方案 List list=new ArrayList(); for(int i=0;i<10;1++){ A a=new A(); list.add(a); } 解决方案二: 不知道你想表达什么,,用一个for循环初始化后放到数组中去不就行了 解决方案三: 按照你的需求,如果你的初始化数据有规律的话,可以用循

java 文章发布-利用java系统做个文章发布求思路

问题描述 利用java系统做个文章发布求思路 利用java做一个文章发布系统 初期的想法是使用Spring+Hibernate 在数据库取出的内容如何显示在页面 是用request么? 新手一只求指导 解决方案 数据库资源宝贵,肯定不能把源文件存进去,可以存文件名,再根据文件名到某一路径下获取该文件,使用浏览器可以在线预览或者下载!

link 中let为什么不需要声明就能使用,看了很多文章还是不清楚,谁知道?

问题描述 link 中let为什么不需要声明就能使用,看了很多文章还是不清楚,谁知道? link 中let为什么不需要声明就能使用,看了很多文章还是不清楚,谁知道? 解决方案 上午回答过你了,比如 from x in table let i=x*2 select i; 它相当于 table.Select(x => new { x, i=x*2 }).Select(x => x.i );

页面-java web网上书店有个问题 求大神帮忙看下

问题描述 java web网上书店有个问题 求大神帮忙看下 前一个页面一个表单传值, 请输入收货地址: 后面在OrderServlet中处理 其中的数据库中的操作没有问题 但是连到OrderServlet中出现求大神帮忙!!!!! 解决方案 你点击继续看看什么效果啊,如果有问题就贴出来 解决方案二: 没有效果就是停在这个servlet了,而且数据库方法也没有实现 解决方案三: 数据库方法也没有实现

c#-什么样的情况下,调用close,什么样的情况下,调用dispose?看了很多文章还是不懂

问题描述 什么样的情况下,调用close,什么样的情况下,调用dispose?看了很多文章还是不懂 什么样的情况下,调用close,什么样的情况下,调用dispose?看了很多文章还是不懂 解决方案 这个要看具体情况,close一般是关闭数据库,文件等,dispose是释放非托管资源. 解决方案二: close是关闭连接,如数据库连接:dispose是释放非托管资源,如网络连接.