可以说我有一个类似于以下的Kotlin类:
class MyKotlinExample {
val mMyString = MutableLiveData<String>()
}
Run Code Online (Sandbox Code Playgroud)
MutableLiveData扩展LiveData但是我不想暴露MutableLiveData给其他类。他们应该只将/访问LiveData<String>视为我的特别String
有可能,和/或良好/建议等吗?
您可以使用支持属性:
class MyKotlinExample {
private val _myString = MutableLiveData<String>()
val myString: LiveData<String>
get() = _myString
}
Run Code Online (Sandbox Code Playgroud)
您还可以为您的客户端提供一个接口,该接口仅提供LiveData<String>. 鉴于以下类:
interface LiveData<T> {
val value: T
}
data class MutableLiveData<T>(override var value: T) : LiveData<T>
Run Code Online (Sandbox Code Playgroud)
创建以下接口/实现:
interface MyExampleInterface {
val myString: LiveData<String>
}
class MyExampleClass : MyExampleInterface {
override val myString: MutableLiveData<String> = MutableLiveData("")
}
Run Code Online (Sandbox Code Playgroud)
在内部,您可以访问myStringas MutableLiveData,并且可以传递MyExampleClassas的实例,MyExampleInterface因此它们只能访问myStringas LiveData<String>。
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |