我想扩展 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/