在Java的房间中使用Generic Dao时出错

时间:2019-05-11 04:38:15

标签: java android generics android-room dao

当我尝试在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);

}

1 个答案:

答案 0 :(得分:1)

由于类型擦除,Java无法在运行时告诉您T的含义。您可以通过创建将T 绑定绑定到特定类型的子类型来提供此信息,例如:

public interface CarDao extends BaseDaoAccess<Car> { }