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

Kotlin类型不匹配错误咨询:第5、6行报错问题排查

解决Kotlin类型不匹配错误:推断类型为String,但期望的是String.Companion

嘿,我一眼就瞅出你这段代码的问题啦——第5、6行的变量声明写法错了,才导致了那个类型不匹配的报错。

错误原因解析

你现在写的:

var roboName= String 
var roboColor= String 

这里的String指的是String类的伴生对象(String.Companion),而不是你想要用来存储机器人名称、颜色的String类型。当你在init块里把name(实际是String类型)赋值给roboName时,就会出现「推断类型为String,但期望的是String.Companion」的类型不匹配错误。

修正后的代码

我们只需要把变量的类型声明改对就行,有两种写法:

写法1:明确声明变量类型(保留init块)

class Robot(name: String, color: String) { 
    var roboName: String  // 用冒号声明类型,不是赋值
    var roboColor: String 
    init { 
        this.roboName = name 
        this.roboColor = color 
    } 
    fun makeBed() { 
        println("I will make your bed.") 
    } 
} 
fun main(args: Array<String>){ 
    var robot1 = Robot("Robot1","Black") 
    println(robot1.roboName) 
    println(robot1.roboColor) 
    robot1.makeBed() 
}

写法2:直接初始化变量(更简洁,去掉init块)

Kotlin支持自动类型推断,我们可以直接在声明变量时用构造函数的参数初始化,省去init块:

class Robot(name: String, color: String) { 
    var roboName = name  // Kotlin自动推断类型为String
    var roboColor = color 
    fun makeBed() { 
        println("I will make your bed.") 
    } 
} 
fun main(args: Array<String>){ 
    var robot1 = Robot("Robot1","Black") 
    println(robot1.roboName) 
    println(robot1.roboColor) 
    robot1.makeBed() 
}

运行结果

修正后运行代码,会正常输出:

Robot1
Black
I will make your bed.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:37