You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Java可调用CharBuffer的charAt而Kotlin不行?Kotlin中如何调用charAt?

问题原因

Kotlin针对Java的CharSequence接口做了运算符映射约定,会将charAt(int index)方法映射为下标访问运算符[],因此Kotlin编译器默认隐藏了CharSequence实现类的charAt方法,不允许直接调用,这就是示例Kotlin代码编译报错的原因。
而Java不存在这种运算符映射规则,所以可以直接调用CharBuffer的charAt方法。

Kotlin中的正确调用方式

有两种可用的调用方式,优先推荐第一种Kotlin原生惯用写法:

  • 方式1:使用下标访问运算符(最优写法)
import java.nio.CharBuffer

class TestKotlin {
    fun test() {
        val buffer = CharBuffer.wrap("asd")
        val char = buffer[0] // 等效于Java中的buffer.charAt(0)
    }
}
  • 方式2:强转为Java的CharSequence后显式调用charAt(仅兼容场景使用)
import java.nio.CharBuffer

class TestKotlin {
    fun test() {
        val buffer = CharBuffer.wrap("asd")
        val char = (buffer as java.lang.CharSequence).charAt(0)
    }
}

内容的提问来源于stack exchange,提问作者NotYou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:36:02