Jir*_*ire 8 overloading kotlin
例如,FastUtil IntArrayList有一个push接受int(原始)和Integer(盒装)的方法,但Kotlin认为它们都是相同的函数push(Int),因此我根本不能使用该函数,因为函数是模糊的.
当Java库对基本类型和盒装类型都有重载时,我该怎么办?
(ps我知道我可以使用这个add(int)方法.如果我将来遇到这样的问题,我正在寻找该怎么做.)
在Java中考虑这些方法:
void f(int x) { }
void f(Integer y) { }
Run Code Online (Sandbox Code Playgroud)
在Kotlin,他们被视为
f(x: Int)
f(x: Int!)
Run Code Online (Sandbox Code Playgroud)
第二种方法有一个平台类型的参数,这意味着它可以是可空的,对应于Integer.
第一个可以通过Kotlin Int通过简单调用:
f(5) // calls f(int x)
Run Code Online (Sandbox Code Playgroud)
要调用第二个,可以将参数转换为可为空Int?,从而选择重载:
f(5 as Int?) // calls f(Integer y)
Run Code Online (Sandbox Code Playgroud)
您是否尝试过编写一个 Java 类来充当中介?也就是说,使用您希望 Kotlin 查看的方法编写您自己的 java 类,然后从您的 Kotlin 代码中调用该方法。
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |