我想扩展 SQLiteDataBase 类,以便能够覆盖某些方法(如 rawQuery、execSQL 等),目的是对查询执行时间进行一些统计。

我在数百个地方调用了这些函数。因此,从基类 SQLiteDatabase 创建派生类对我有很大帮助!

问题是:在扩展 SQLiteDataBase 时,它​​无法从父类(super class)中找到任何构造函数。

import android.database.sqlite.SQLiteDatabase;

public class MySQLiteDatabase extends SQLiteDatabase
{

    MySQLiteDatabase()
    {
        super(); // <<<--- can't find any visible constructor
    }

}

最佳答案



您不能扩展 SQLiteDatabase,因为它被声明为 final,并且您不能在 java 中扩展 final 类。

另一种方法是制作一个“包装器”SQLiteDatabase,它将复制 SQLiteDatabase 类及其方法并将测量逻辑插入包装器方法中:

public class SQLiteDatabaseWrapper {

    private SQLiteDatabase mDatabase;

    public void initDatabase() {
      //obtain the database here and assign it to mDatabase
    }

    // replicate the SQLiteDatabase methods
    public void execSQL(String sql) {
       //insert whatever logic you have for measurement
       // do the measurement
       mDatabase.execSQL(sql);
    }
    // other methods from SQLiteDatabase
}

关于java - 如何扩展 SQLiteDatabase 类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15577307/

10-12 01:40