Cursor 是接口(android.database.Cursor),**不能直接實例化**。
Cursor cursor = db.query(...)?SQLiteDatabase.query() 返回的是 **實現了 Cursor 接口的具體類實例**(如 SQLiteCursor、CursorWrapper、AbstractCursor 子類)。
Implementations should subclass AbstractCursor.cursor.getClass().getName() 打印查看。abstract 關鍵字?Java 8+ 接口默認方法可有實現(default),但 Cursor 多為抽象方法。**IDE 顯示的源碼可能是反編譯或框架代碼**,實際 AbstractCursor 中方法已有默認實現或標註 abstract。
// 定義接口
interface Cursor { void moveToFirst(); }
// 實現類
class SQLiteCursor implements Cursor { public void moveToFirst() { ... } }
// 使用
Cursor c = new SQLiteCursor(); // 實例是 SQLiteCursor,類型聲明為 Cursor
Cursor cursor = ... 是**多態**:接口類型變量引用實現類對象。Log.d("TAG", cursor.getClass().getName());