Androidx Room rx 问题
Andoridx Room rx issue
我开始使用支持 io.reactivex
return 类型的最新 androidx.room
版本。
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 class
@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
错误
error: local variable user is accessed from within inner class; needs to be declared final
突出显示的字段在此方法中
@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 中声明为 final 但它是在 class 中生成的。
有人遇到过这个吗?
我遇到了同样的问题。通过添加
解决
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
在build.gradle
我正在使用 Linux 机器并结合 user3021656 的答案,tynn 成功构建
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
并将 Android Studio 的 Java 版本设置为
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
我开始使用支持 io.reactivex
return 类型的最新 androidx.room
版本。
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 class
@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
错误
error: local variable user is accessed from within inner class; needs to be declared final
突出显示的字段在此方法中
@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 中声明为 final 但它是在 class 中生成的。
有人遇到过这个吗?
我遇到了同样的问题。通过添加
解决compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
在build.gradle
我正在使用 Linux 机器并结合 user3021656 的答案,tynn 成功构建
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
并将 Android Studio 的 Java 版本设置为
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)