1

我有一个由 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;      
}

其中光标是android.database.Cursor

4

1 回答 1

3

我想你可以删除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;
    }
}
于 2012-09-25T20:04:05.687 回答