首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin不允许使用charAt

Kotlin不允许使用charAt
EN

Stack Overflow用户
提问于 2021-11-02 17:23:34
回答 1查看 136关注 0票数 4

为什么java可以编译,而kotlin不能?以及如何在kotlin中调用charAt

Java:

代码语言:javascript
运行
复制
import java.nio.CharBuffer;

public class Test {
    public static void test() {
        CharBuffer buffer = CharBuffer.wrap("asd");
        buffer.charAt(0);
    }
}

Kotlin:

代码语言:javascript
运行
复制
import java.nio.CharBuffer

class TestKotlin {
    fun test() {
        val buffer = CharBuffer.wrap("asd")
        buffer.charAt(0)
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-02 19:10:41

我从观察this old issue的角度推断,Kotlin开发人员曾经意外地将CharBuffer.charAt()CharBuffer.get()视为等价的,并将charAt()方法隐藏在Kotlin中,并将其映射到get()。他们这样做可能是为了推广数组访问语法(方括号)的使用,并避免所谓的冗余。

也许后来,当上面的问题得到解决时,他们错过了揭开方法的机会。

在科特林,buffer.charAt(i)就是buffer[buffer.position() + i]。您可以编写一个扩展函数,以便可以继续使用它:

代码语言:javascript
运行
复制
fun CharBuffer.charAt(index: Int) = this[position() + index]

如果选择越界索引,则错误消息的信息量将略低于原始方法中的错误消息。

也许有人应该在YouTrack上为这个开一个问题……

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69814560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档