受到另一个问题的启发。
在fastutil
库IntArrayList
中有一个具有以下 Java 签名的方法的类:
public void push(Integer o)
在 Kotlin 中,它被视为
push(o: Int)
是否有特定原因,Int
而不是平台类型Int!
?
我希望它push(o: Int!)
至少是因为在具有 Kotlin 源的项目中的 Java 源中定义的具有相同签名的方法具有Int!
从 Kotlin 看到的参数类型(甚至在不同的模块中定义,甚至从该模块的 jar 导入!)。
此外,所描述的行为会导致与合法具有参数的(在同一类中)push(Integer o)
发生冲突——它们都被视为. 如果有for ,就不会有冲突(我也尝试在我的代码中定义这对方法——仍然可以按我的预期工作,有)。push(int o)
Int
push(o: Int)
Int!
Integer
Int!
Kotlin 版本是1.0.2
.
Gradle 依赖项fastutil
:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'