我是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了解更多信息。