【问题标题】:How to return different type for a getter property in kotlin如何在 kotlin 中为 getter 属性返回不同的类型
【发布时间】:2019-08-29 20:43:16
【问题描述】:

我正在尝试从 cretin 字段的吸气剂返回不同的类型。

private val _isDeviceConnectedToTheInernet = MutableLiveData<Boolean>()
val isDeviceConnectedToTheInernet : LiveData<Boolean>
get() =_isDeviceConnectedToTheInernet.value

但是 kotlin 的编译器告诉我“getter 返回类型必须等于属性的类型”,所以是否可以选择返回不同类型的值,或者我应该编写新函数来获取它的类型?

【问题讨论】:

  • 绝对没有办法奏效。您从 getter 返回的类型显然是 Boolean,那么您为什么将属性声明为 LiveData&lt;Boolean&gt;

标签: android kotlin getter android-livedata


【解决方案1】:

getter 应该返回_isDeviceConnectedToTheInternet,没有.value

private val _isDeviceConnectedToTheInernet = MutableLiveData<Boolean>()
val isDeviceConnectedToTheInernet : LiveData<Boolean>
    get() =_isDeviceConnectedToTheInernet

选项 2:

private val _isDeviceConnectedToTheInernet = MutableLiveData<Boolean>()
val isDeviceConnectedToTheInernet : Boolean?
    get() =_isDeviceConnectedToTheInernet.value

【讨论】:

  • 当然可以,但我想返回一个布尔值而不是实时数据对象...
  • 那么该字段应该是您要返回的类型,因此在这种情况下为布尔值。我编辑了答案并为您的评论添加了解决方案。
  • 但我希望它是实时数据类型...我的问题是可能吗?
  • 在您写的第一条评论中您不想要实时数据对象,现在您说您想要吗?我很迷惑。我在回答中给出了这两个选项。
  • 我想在 getter 中从字段返回不同的类型,我希望字段是实时数据类型并在 getter 中返回布尔类型,这可能吗?还是我需要编写一个函数来获取这个属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多