Android 房间不接受通用字段类型
Android Room's does not accept generic field type
我正在尝试建立一个基础 class,其中 id 字段属于通用类型,例如
class BaseEntity<T>{
private T id;
//get, set;
}
class User extends BaseEntity<String> {
//blah blah blah
}
我有一个这样的 DAO:
@Dao
public interface UserDao {
@Query("SELECT * FROM user WHERE id = :id")
Flowable<User> getUserById(String id);
}
我得到一个编译错误:
app\build\generated\source\apt\irrisimples\debug\com\irrisimples\data\source\local\UserDao_Impl.java:275: error: cannot find symbol
final T _tmpId;
^
并在 UserDao_Impl:275 中:
final T _tmpId;
_tmpId = _cursor.getString(_cursorIndexOfId);
所以这意味着 Room 无法弄清楚 T 是什么并替换那里的值。是bug还是我做错了什么?
P.S:使用 Android Studio 3.1 BETA 3 和 Room 1.0.0(已测试 1.1.0-alpha2)
应该在 1.1.0-alpha3 中修复
我正在尝试建立一个基础 class,其中 id 字段属于通用类型,例如
class BaseEntity<T>{
private T id;
//get, set;
}
class User extends BaseEntity<String> {
//blah blah blah
}
我有一个这样的 DAO:
@Dao
public interface UserDao {
@Query("SELECT * FROM user WHERE id = :id")
Flowable<User> getUserById(String id);
}
我得到一个编译错误:
app\build\generated\source\apt\irrisimples\debug\com\irrisimples\data\source\local\UserDao_Impl.java:275: error: cannot find symbol final T _tmpId; ^
并在 UserDao_Impl:275 中:
final T _tmpId; _tmpId = _cursor.getString(_cursorIndexOfId);
所以这意味着 Room 无法弄清楚 T 是什么并替换那里的值。是bug还是我做错了什么?
P.S:使用 Android Studio 3.1 BETA 3 和 Room 1.0.0(已测试 1.1.0-alpha2)
应该在 1.1.0-alpha3 中修复