Я начинаю использовать последнюю androidx.room
версию, которая поддерживает io.reactivex
возвращаемый тип.
dependencies {
def room_version = "2.1.0-alpha02"
implementation "androidx.room:room-rxjava2:$room_version"
kapt "androidx.room:room-compiler:$room_version"
testImplementation "androidx.room:room-testing:$room_version"
}
Простой даос класс
@Dao
interface UserDao : BaseDao<UserTable> {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insertUser(user: UserTable):Maybe<Long>
@Update
fun updateUser(user:UserTable):Completable
@Query("DELETE FROM $USER_TABLE")
fun clear()
}
генерирует UserDao_Impl.java
с ошибкой
ошибка: доступ к локальной переменной пользователя осуществляется из внутреннего класса;должно быть объявлено окончательным
В этом методе выделено выделенное поле
@Override
public Maybe<Long> insertUser(UserTable user) {
return Maybe.fromCallable(new Callable<Long>() {
@Override
public Long call() throws Exception {
__db.beginTransaction();
try {
long _result =
__insertionAdapterOfUserTable.insertAndReturnId(user);//error line
__db.setTransactionSuccessful();
return _result;
} finally {
__db.endTransaction();
}
}
});
}
Это правда, что (UserTable user)
должен быть объявлен как окончательный в Java, но это сгенерированный класс.Кто-нибудь сталкивался с этим?