kotlin - 为什么在运行以下代码时我没有收到带有消息“请不要为空”的运行时异常
问题描述
为什么我在运行以下代码时没有收到带有消息“请不要为空”的运行时异常:代码:
class Car(val name: String, col: String) {
val fuel = 100
var color = col
set(value) {
if (value.isBlank()) {
throw RuntimeException("no empty, please")
}
field = value
}
}
fun main() {
var car = Car("Maruti", "")
println("Your car ${car.name} is of ${car.color}")
}
解决方案
在您的示例中,您直接初始化支持字段。这意味着不会调用任何setter。显然,这段代码会调用setter:
car.color = ""
init
或者您可以在类的块内调用 setter Car
:
class Car(col: String) {
...
init {
color = col
}
}
如果设置空颜色,将抛出 RuntimeException。
推荐阅读
- c++ - 如何包装具有参数的 C++ 类方法或在 C 中返回另一个 C++ 类的实例?
- html - vue 模板中的 eslint [vue/no-unused-vars] 错误
- windows - 大量空间,但 - [53100] 错误:无法写入块……:设备上没有剩余空间
- java - 为什么使用 Epsilon 与 G1 相比,观察到重复的内存分配更慢?
- gdb - 为什么使用浮点控制时 GDB 回溯受限?
- ruby - bundle 命令提示 github 登录不起作用
- c# - Xamarin Android:为什么用三个键在 recyclerview 上按组划分元素不起作用?
- kubernetes - 始终运行一个 Kubernetes pod 实例
- c++ - 是否可以使用 C++17 折叠表达式仅折叠包的一部分?
- c# - 无法在 C Sharp 中使用 Carter 对简单端点进行单元测试