Andoridx Room RX выпуск - PullRequest
       15

Andoridx Room RX выпуск

0 голосов
/ 13 ноября 2018

Я начинаю использовать последнюю 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, но это сгенерированный класс.Кто-нибудь сталкивался с этим?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Я использую Linux-машину и объединяю ответы пользователя3021656, и Tynn получил успешную сборку с

compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_8
  targetCompatibility JavaVersion.VERSION_1_8
}

и установка версии Java для Android Studio как

Java-версия "1.8.0_191"

Java (TM) SE Runtime Environment (сборка 1.8.0_191-b12)

0 голосов
/ 22 ноября 2018

У меня была такая же проблема. Решил, добавив

compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_8
  targetCompatibility JavaVersion.VERSION_1_8
}

в build.gradle

...