受到另一个问题的启发。
在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)Intpush(o: Int)Int!IntegerInt!
Kotlin 版本是1.0.2.
Gradle 依赖项fastutil:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'