实例化的接口对象 - 如何?

时间:2016-03-06 01:08:43

标签: java android oop cursor wrapper

进入这行代码,定义一个Cursor类型的变量 - 一个接口 - 在类中 - CursorWrapper - 实现接口:

protected final Cursor mCursor;

然后这是该类的构造函数:

public CursorWrapper(Cursor cursor) { mCursor = cursor; }

这里发生了什么?它似乎是一个接口被实例化,但我认为你无法实例化一个接口。

1 个答案:

答案 0 :(得分:1)

  

这里发生了什么?

嗯,CursorWrapper接受类型为Cursor的对象作为构造函数参数,然后将其分配给字段。

  

似乎正在实例化一个接口

你的任何一个陈述都没有实例化。

  

但我认为你无法实例化一个接口

你做不到。您可以实例化实现该接口的类。

CursorWrapper包裹CursorCursor是一个界面。有几个类实现Cursor。开发人员从几个地方获得Cursor,主要来自数据库查询和ContentResolver查询。

然而,与the honey badger一样,CursorWrapper并不关心。 CursorWrapper将愉快地包装任何Cursor实现。 CursorWrapper本身就没用了;它的目的是通过子类化CursorWrapper来更轻松地创建自定义包装器,就像我使用my LegacyCompatCursorWrapper一样。

现在,如果CursorWrapper只能包装来自数据库的Cursor,那么它不应该将Cursor作为参数,而是SQLiteCursor