我是Kotlin的初学者,我正在尝试使用以下代码制作基本的人类:

class Person(_firstName: String, _lastName: String, _age: Int){

    val firstName: String = _firstName
    val lastName: String = _lastName
    var age: Int = _age

    fun setAge(newAge: Int){
        age = newAge
    }
}

我想在类中添加一些基本方法,例如getter和setter。创建setAge函数并尝试编译时,出现以下错误:
Error:(4, 5) Kotlin: Platform declaration clash: The following declarations have the same JVM signature (setAge(I)V):
    fun <set-age>(<set-?>: Int): Unit defined in Person
    fun setAge(newAge: Int): Unit defined in Person

Error:(6, 5) Kotlin: Platform declaration clash: The following declarations have the same JVM signature (setAge(I)V):
    fun <set-age>(<set-?>: Int): Unit defined in Person
    fun setAge(newAge: Int): Unit defined in Person

我是Kotlin的新手,完全不知道问题是什么。我对Java有一定的经验,从没有真正遇到过创建(几乎)这样的琐碎类的问题。

有人可以用一种适合初学者的方式来说明这里到底是什么问题,以及我可以做些什么来解决这个问题/将来避免它。谢谢。

最佳答案

这里的问题是

fun setAge(newAge: Int){
    age = newAge
}

当你声明
var age: Int = _age

它将为您生成一个setAge方法,因此您应该做的是覆盖age的设置方法。但是,就您而言,这是不必要的,因为生成的 setter 将与setAge方法相同。

您也可以参考official documentation了解更多信息。

08-03 23:54