【发布时间】:2012-09-25 18:41:12
【问题描述】:
我有一个由 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
【问题讨论】:
-
你得到了什么编译器错误?可以发在这里吗?
-
返回类型与DatabaseAdapter.executeQuery(String)不兼容
-
executeQuery实现中返回类型Cursor的完全限定名称是什么。可能这就是问题所在。 -
您的实现应该返回这种 (
com.domain.database.Cursor<?>) 类型的游标。您的编译器错误清楚地表明:-android.database.Cursor与com.domain.database.Cursor<?>不兼容。此外,它应该是通用游标.. -
那么,如何设置抽象类以便可以返回 android.database.cursor 或 java.awt.Cursor?正如主题所述。
标签: java android generics types