Kotlin:类型不匹配:推断类型是String但是String.Companion是预期的

时间:2018-04-28 19:17:50

标签: kotlin

第5行和第6行出错。

  

Kotlin:类型不匹配:推断类型是String但String.Companion   预计

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()
}

5 个答案:

答案 0 :(得分:4)

已将 String分配给变量,该变量引用String.Companion对象。这也是属性的类型String.Companion。您想要做的是定义您的财产类型:

var roboName: String

此外,您可以更进一步,加入声明与作业:

var roboName: String = name
var roboColor: String = color

答案 1 :(得分:0)

您的语法不正确。试试这个(使用数据类来简化它并修复类型声明的语法 - 使用:进行类型声明,而不是=):

data class Robot(val name: String, val color: String) {    
    fun makeBed() {
        println("I will make your bed.")
    }
}

fun main(args: Array<String>) {
    val robot1 = Robot("Robot1", "Black")
    println(robot1.name)
    println(robot1.color)
    robot1.makeBed()
}

答案 2 :(得分:0)

  

您必须添加如下变量:

var roboName: String
var roboColor: String

答案 3 :(得分:0)

一个非常不同的场景让我想到了这个问题,我将分享我的场景,因为它可能会帮助其他人。对我来说,错误是

  

类型不匹配:推断的类型为String?但应该是String

在我的情况下,我声明了一个String类型的var,实际上方法的返回类型是可为空的字符串,即

var variable:String 必须为 var variable:String?

答案 4 :(得分:0)

您可以在声明的开头使用lateinit关键字。

class Robot (name: String,color :String) {
    lateinit var roboName = String
    lateinit var roboColor = String
    init {
        this.roboName=name
        this.roboColor=color
    }
    fun makeBed() {
        println("I will make your bed.")
    }
}

fun main(args: Array&lt;String>) {
    var robot1 = Robot("Robot1","Black")
    println(robot1.roboName)
    println(robot1.roboColor)
    robot1.makeBed()
}