有没有办法像 JAVA Comparable一样比较两个对象?
val o1: Any
val o2: Any
Run Code Online (Sandbox Code Playgroud)
我知道它们是同一类并实现 JAVA Comparable。如果我将它们转换为 JAVA Comparable,我会收到警告,我应该使用 Kotlin Comparable,但 Kotlin 版本需要在编译时未知的 Type。我所需要的只是这样的:
val result = (o1 as Comparable).compareTo(o2)
Run Code Online (Sandbox Code Playgroud)
您可以使用Comparable<Any>。它会抱怨未经检查的强制转换,您可以抑制它,因为您知道如果类型匹配,它是安全的。
val o1: Any = 2
val o2: Any = 4
if (o1 is Comparable<*> && o1::class == o2::class) {
@Suppress("UNCHECKED_CAST")
if (o1 as Comparable<Any> < o2) {
println("it's less")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |