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

Android Studio 3.1中Kotlin调用toUpperCase报未解析引用问题求助

解决Kotlin中String!调用toUpperCase()未解析引用的问题

我来帮你搞定这个问题!在Android Studio 3.1的Kotlin项目里遇到这个情况,主要有两个核心原因,咱们一步步解决:

1. 平台类型的空安全与函数识别问题

你拿到的String!是Kotlin的平台类型,它对应Java的String,既可能为null也可能不为null,这种模糊性有时候会让IDE无法正确识别Kotlin的扩展函数。另外,早期Kotlin版本(AS3.1配套的Kotlin大概是1.2.x)里,无参的toUpperCase()其实并不推荐使用,反而要求指定Locale来避免国际化问题,这也可能是IDE标红的原因。

2. 正确的代码写法

安全处理空值的版本(推荐)

如果不确定nextString()会不会返回null,用空安全调用配合默认值:

val name = reader.nextString()?.toUpperCase(Locale.getDefault()) ?: ""

确定非空的版本

如果你能保证nextString()一定返回非空字符串(比如Json结构里这个字段是必填的),可以直接用:

val name = reader.nextString().toUpperCase(Locale.ROOT)

这里用Locale.ROOT是为了避免系统默认Locale带来的大小写转换差异,如果你需要适配用户的系统语言,换成Locale.getDefault()就行。

3. 检查Kotlin版本兼容性

AS3.1对Kotlin版本有要求,确保你的项目配置了兼容的版本:

  • 在项目根目录的build.gradle里:
buildscript {
    ext.kotlin_version = '1.2.30' // 这个版本和AS3.1完美兼容
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
  • 在模块的build.gradle里:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

做完这些操作后,Sync一下项目,IDE应该就能正确识别toUpperCase()函数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:38:03