gpt4 book ai didi

android - Kotlin:使用自定义 setter 时没有lateinit的解决方法?

转载 作者:IT老高 更新时间:2023-10-28 13:34:09 25 4
gpt4 key购买 nike

在我的 Activity 中,我有一个不可为空的字段并且有一个自定义 setter 。我想在我的 onCreate 方法中初始化该字段,所以我将 lateinit 添加到我的变量声明中。但是,显然你不能这样做(目前):https://discuss.kotlinlang.org/t/lateinit-modifier-is-not-allowed-on-custom-setter/1999 .

这些是我可以看到的解决方法:

  • 以 Java 方式进行。使该字段可以为空,并将其初始化为空。我不想那样做。
  • 使用类型的“默认实例”初始化字段。这就是我目前所做的。但这对于某些类型来说太贵了。

有人可以推荐一种更好的方法(不涉及删除自定义 setter )吗?

最佳答案

将其替换为可空属性支持的属性:

private var _tmp: String? = null
var tmp: String
get() = _tmp!!
set(value) {_tmp=value; println("tmp set to $value")}

或者这样,如果你希望它与 lateinit 语义一致:

private var _tmp: String? = null
var tmp: String
get() = _tmp ?: throw UninitializedPropertyAccessException("\"tmp\" was queried before being initialized")
set(value) {_tmp=value; println("tmp set to $value")}

关于android - Kotlin:使用自定义 setter 时没有lateinit的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46366869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com