Java 科特林:平台声明冲突

Java 科特林:平台声明冲突,java,kotlin,jvm,Java,Kotlin,Jvm,我是Kotlin的初学者,我正在尝试用以下代码创建一个基本person类: 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 = new

我是Kotlin的初学者,我正在尝试用以下代码创建一个基本person类:

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
错误:(4,5)Kotlin:平台声明冲突:以下声明具有相同的JVM签名(setAge(I)V):
乐趣(:Int):个人定义的单位
趣味设置(newAge:Int):个人定义的单位
错误:(6,5)Kotlin:平台声明冲突:以下声明具有相同的JVM签名(setAge(I)V):
乐趣(:Int):个人定义的单位
趣味设置(newAge:Int):个人定义的单位
我是科特林的新手,完全不知道问题是什么。我在Java方面有一些经验,在创建这样(几乎)琐碎的类时从未遇到过任何问题

请有人以一种初学者友好的方式解释一下这里的问题到底是什么,以及我可以做些什么来解决这个问题/在将来避免它。谢谢。

这里的问题是

fun setAge(newAge: Int){
    age = newAge
}
当你申报时

var age: Int = _age
它将为您生成一个
setAge
方法,因此您应该做的是覆盖
age
的setter。但是,在您的情况下,这是不必要的,因为生成的setter将执行与
设置方法相同的操作

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

这里的问题是

fun setAge(newAge: Int){
    age = newAge
}
当你申报时

var age: Int = _age
它将为您生成一个
setAge
方法,因此您应该做的是覆盖
age
的setter。但是,在您的情况下,这是不必要的,因为生成的setter将执行与
设置方法相同的操作


您还可以参考了解更多信息。

您需要了解Kotins的“属性”概念。阅读这里的文档,您需要理解Kotins的“属性”概念。在这里阅读文档