我有一个抽象类,可以通过Java和Android实现。该类有一个方法需要返回一个通用的Cursor,以便实现可以返回它们各自的游标。
我的抽象类:
public abstract class DatabaseAdapter {
protected abstract com.domain.database.Cursor<?> executeQuery(String command);
}
光标类型:
public final class Cursor<T> {
private T value = null;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
如前所述,我希望实现方法根据情况返回Java游标或Android游标。我可以很好地创建抽象类,但是当我尝试实现时,我得到一个编译错误。我显然不太了解多态性。
实施方法
public Cursor executeQuery(String query){
Cursor cursor = db.rawQuery(query, selectionArgs);
return cursor;
}
其中Cursor是 android.database.Cursor
答案 0 :(得分:2)
我想你可以删除com.domain.database.Cursor
,但我可能错了。
我的解决方案是DatabaseAdapter
通用,而不是Cursor
。
/**
* @param C the type of the Cursor this adapter returns
*/
public abstract class DatabaseAdapter<C> {
protected abstract C executeQuery(String command);
}
然后你这样实现:
public class AndroidDatabaseAdapter extends DatabaseAdapter<android.database.Cursor> {
public Cursor executeQuery(String query){
Cursor cursor = db.rawQuery(query, selectionArgs);
return cursor;
}
}