gpt4 book ai didi

android - 将 MutableLiveData 公开为 LiveData 的正确方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:25 27 4
gpt4 key购买 nike

考虑以下公开MutableLiveData的方法:

方法A

class ThisViewModel : ViewModel() {

private val _someData = MutableLiveData(true)
val someData: LiveData<Boolean>
get() = _someData
}

// Decompiled Kotlin bytecode

public final class ThisViewModelDecompiled extends ViewModel {

private final MutableLiveData _someData = new MutableLiveData(true);

@NotNull
public final LiveData getSomeData() {
return (LiveData)this._someData;
}
}

方法B

class ThatViewModel : ViewModel() {

private val _someData = MutableLiveData(true)
val someData: LiveData<Boolean> = _someData
}

// Decompiled Kotlin bytecode

public final class ThatViewModelDecompiled extends ViewModel {

private final MutableLiveData _someData = new MutableLiveData(true);

@NotNull
private final LiveData someData;

@NotNull
public final LiveData getSomeData() {
return this.someData;
}

public ThatViewModel() {
this.someData = (LiveData)this._someData;
}
}

Is there a reason to use Method B over Method A?

最佳答案

Java 的角度来看,方法 A 在类中少了一个字段,因此“更”高效。从 Kotlin 的角度来看,方法 B 表示得更清楚一点,即非可变属性是对可变属性的直接引用。此外,Kotlin 足够聪明,可以在本地访问字段而不是 getter 方法。

Is there a reason to use Method B over Method A?

一般来说,这只是一个品味问题。从微观优化的角度来看,这取决于您是否也在类本身中使用此引用。

关于android - 将 MutableLiveData 公开为 LiveData 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56504896/

27 4 0