Android Room不接受通用字段类型

时间:2018-02-17 19:55:22

标签: android android-room

我正在尝试使用一个基类,其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:错误:找不到符号               final T _tmpId;                     ^

并在UserDao_Impl:275:

  

final T _tmpId;               _tmpId = _cursor.getString(_cursorIndexOfId);

所以这意味着Room无法弄清楚什么是T并替换那里的值。这是一个错误还是我做错了什么?

P.S:使用Android Studio 3.1 BETA 3和1.0.0室(测试1.1.0-alpha2)

1 个答案:

答案 0 :(得分:2)

参考Google Issue Tracker

应该在1.1.0-alpha3中修复