当我尝试在Android Room中使用Generic Dao时,出现此错误:
不能在查询方法中使用未绑定的泛型。它必须通过基本的Dao类绑定到一个类型。
import android.arch.lifecycle.LiveData;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Delete;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.RawQuery;
import android.arch.persistence.room.Update;
import java.util.List;
@Dao
public interface BaseDaoAccess<T> {
@Insert
Long Insert(T entity);
@Update
void Update(T entity);
@Delete
void Delete(T entity);
@RawQuery
LiveData<List<T>> RowQuery(String query);
}
答案 0 :(得分:1)
由于类型擦除,Java无法在运行时告诉您T
的含义。您可以通过创建将T
绑定绑定到特定类型的子类型来提供此信息,例如:
public interface CarDao extends BaseDaoAccess<Car> { }