我想做这样的事情:
fun process(minutes: Int) = 0
fun test() {
process(System.currentTimeMillis() / 1000 / 60) // error: Int expected
}
如果我尝试process((System.currentTimeMillis() / 1000 / 60) as Int)
,我会在运行时获得ClassCastException
。
那么如何将Long转换为Int?
答案 0 :(得分:43)
使用Long.toInt()
:
process((System.currentTimeMillis() / 1000 / 60).toInt())
答案 1 :(得分:1)
↓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
}