繁体   English   中英

怎么把Kotlin转换成Int整数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM