为什么java可以编译,而kotlin不能?以及如何在kotlin中调用charAt
?
Java:
import java.nio.CharBuffer;
public class Test {
public static void test() {
CharBuffer buffer = CharBuffer.wrap("asd");
buffer.charAt(0);
}
}
Kotlin:
import java.nio.CharBuffer
class TestKotlin {
fun test() {
val buffer = CharBuffer.wrap("asd")
buffer.charAt(0)
}
}
发布于 2021-11-02 11:10:41
我从观察this old issue的角度推断,Kotlin开发人员曾经意外地将CharBuffer.charAt()
和CharBuffer.get()
视为等价的,并将charAt()
方法隐藏在Kotlin中,并将其映射到get()
。他们这样做可能是为了推广数组访问语法(方括号)的使用,并避免所谓的冗余。
也许后来,当上面的问题得到解决时,他们错过了揭开方法的机会。
在科特林,buffer.charAt(i)
就是buffer[buffer.position() + i]
。您可以编写一个扩展函数,以便可以继续使用它:
fun CharBuffer.charAt(index: Int) = this[position() + index]
如果选择越界索引,则错误消息的信息量将略低于原始方法中的错误消息。
也许有人应该在YouTrack上为这个开一个问题……
https://stackoverflow.com/questions/69814560
复制