进入这行代码,定义一个Cursor类型的变量 - 一个接口 - 在类中 - CursorWrapper - 实现接口:
protected final Cursor mCursor;
然后这是该类的构造函数:
public CursorWrapper(Cursor cursor) { mCursor = cursor; }
这里发生了什么?它似乎是一个接口被实例化,但我认为你无法实例化一个接口。
答案 0 :(得分:1)
这里发生了什么?
嗯,CursorWrapper
接受类型为Cursor
的对象作为构造函数参数,然后将其分配给字段。
似乎正在实例化一个接口
你的任何一个陈述都没有实例化。
但我认为你无法实例化一个接口
你做不到。您可以实例化实现该接口的类。
CursorWrapper
包裹Cursor
。 Cursor
是一个界面。有几个类实现Cursor
。开发人员从几个地方获得Cursor
,主要来自数据库查询和ContentResolver
查询。
然而,与the honey badger一样,CursorWrapper
并不关心。 CursorWrapper
将愉快地包装任何Cursor
实现。 CursorWrapper
本身就没用了;它的目的是通过子类化CursorWrapper
来更轻松地创建自定义包装器,就像我使用my LegacyCompatCursorWrapper
一样。
现在,如果CursorWrapper
只能包装来自数据库的Cursor
,那么它不应该将Cursor
作为参数,而是SQLiteCursor
。