[英]How to convert Long to Int in Kotlin?
我想做这样的事情:
fun process(minutes: Int) = 0
fun test() {
process(System.currentTimeMillis() / 1000 / 60) // error: Int expected
}
如果我尝试使用process((System.currentTimeMillis() / 1000 / 60) as Int)
ClassCastException
在运行时会收到ClassCastException
。
那么如何将Long转换为Int?
使用Long.toInt()
:
process((System.currentTimeMillis() / 1000 / 60).toInt())
↓Long.toInt()不安全。 因为int缩小了
val l: Long
l.toInt() ←not safety! when out of int range
请将此功能添加到任意kt文件中。 然后,将一个名为toIntOrNull的方法添加到Long中。 如果该方法不适合int范围,则如果尝试将long转换为int,则返回null。
fun Long.toIntOrNull(): Int? {
return if (this < Int.MIN_VALUE || this > Int.MAX_VALUE) {
null
} else {
this.toInt()
}
}
要么
fun Long.toIntOrNull(): Int? {
val i = this.toInt()
return if (i.toLong() == this) i else null
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.