結論
RealmObjectを継承したクラスにopen
修飾子をつける。
環境
Kotlin: 1.1.4-3
Realm: 3.5.0
エラー内容
Error:(33, 85) error: cannot inherit from final Foo
サンプルコード
コンパイルエラー
class Foo: RealmObject() {
var id: Long = 0
}
OK
open class Foo: RealmObject() {
var id: Long = 0
}
原因
Realmがコンパイル時に生成するProxyクラスがRealmObjectを継承したFooクラスを継承するため。
/app/build/generated/source/kapt/debug/io/realm/FooRealmProxy.java
のクラス宣言部分
public class FooRealmProxy extends rkowase.sample.Foo
implements RealmObjectProxy, FooRealmProxyInterface {
参考
Realm Java 3.5.0
https://realm.io/jp/docs/java/latest/