gpt4 book ai didi

kotlin - 如何使用进行错误检查的自定义 setter 初始化属性?

转载 作者:行者123 更新时间:2023-12-01 08:40:36 25 4
gpt4 key购买 nike

如何使用自定义 setter 初始化属性?

例如,在我的 setter 中,我确保该值不是负数。

class Foo(length: Int) {
var length = length
set(value) {
if (value < 0) throw IllegalArgumentException("Can't be negative.")
field = value
}
}
}

但是,如果我将其称为 Foo(-5),则不会调用异常,因为在初始化属性时不会调用 setter。

我尝试的另一件事是在下面,但是将长度设置两次似乎是错误的。

class Foo(length: Int) {
var length = length
set(value) {
if (value < 0) throw IllegalArgumentException("Can't be negative.")
field = value
}
}

init {
this.length = length
}
}

最后我想到了下面的代码,但这似乎是错误的,因为您在两个地方检查了错误的值。

class Foo(length: Int) {
init {
if (length < 0) throw IllegalArgumentException("Can't be negative.")
}

var length = length
set(value) {
if (value < 0) throw IllegalArgumentException("Can't be negative.")
field = value
}
}
}

最佳答案

您的第二个方法已经尽可能干净了,尽管我会将初始值设置为某个常量,例如 0 而不是 length。然后,如果您忘记在 init block 中分配 length,您会收到编译器警告,指出构造函数参数未使用。

关于kotlin - 如何使用进行错误检查的自定义 setter 初始化属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60515389/

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