为什么java能编译而kotlin不能编译?以及如何charAt在kotlin中调用?
爪哇:
import java.nio.CharBuffer;
public class Test {
public static void test() {
CharBuffer buffer = CharBuffer.wrap("asd");
buffer.charAt(0);
}
}
Run Code Online (Sandbox Code Playgroud)
科特林:
import java.nio.CharBuffer
class TestKotlin {
fun test() {
val buffer = CharBuffer.wrap("asd")
buffer.charAt(0)
}
}
Run Code Online (Sandbox Code Playgroud)
我从这个老问题中得出理论,Kotlin 开发人员曾经不小心将CharBuffer.charAt()和CharBuffer.get()视为等效,并将该charAt()方法隐藏在 Kotlin 中并将其映射到get(). 他们这样做可能是为了促进数组访问语法(括号)的使用并避免所谓的冗余。
也许后来当上述问题得到解决时,他们错过了取消隐藏该方法的机会。
buffer.charAt(i)会buffer[buffer.position() + i]在 Kotlin 中。您可以编写一个扩展函数,以便可以继续使用它:
fun CharBuffer.charAt(index: Int) = this[position() + index]
Run Code Online (Sandbox Code Playgroud)
如果您选择越界索引,则错误消息的信息量将略低于原始方法中的信息。
也许有人应该为此在 YouTrack 上提出一个问题......
| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |