Android : 在 Java 中翻译 Kotlin ViewModel 支持字段封装技术

Android : Translate in Java the Kotlin ViewModel backing field encapsulation technique

在用 Kotlin 编写的 Android 应用程序中,ViewMoel 中的 LiveData 属性可以使用支持字段技术进行封装,如下所示:

private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
    get() = _score

如何在 Java 中翻译它以获得相同级别的封装?

这是一个普通的getter方法,这是转换后的java代码

private final MutableLiveData<Integer> _score = new MutableLiveData<Integer>();

@NotNull
public final LiveData<Integer> getScore() {
    return this._score;
}

这是获取java代码形式的步骤kotlin

在android工作室

tools -> kotlin -> show kotlin byte code -> Decompile

在Java中,class只有字段和函数,所以你可以用这样的getter创建一个私有字段来实现结果。

private final MutableLiveData<Int> score = new MutableLiveData<>();

public final LiveData<Int> getScore(){
    return score;
}