Kotlin 如何显示支持字段中的值

Kotlin 如何显示支持字段中的值,kotlin,backing-field,Kotlin,Backing Field,我想运行下面提到的简单示例。eclipse生成一个错误,显示: main class cant be found or loaded 请让我知道如何修复此错误以及发生此错误的原因 在下面的代码中,我尝试使用支持字段。但是,它们在代码中的使用方式并不能提供预期的输出。 请参阅输出部分 如何显示支持字段的输出 代码: fun main(args: Array<String>) { println("Hello, World!") val p1 = Person_1("jack

我想运行下面提到的简单示例。eclipse生成一个错误,显示:

main class cant be found or loaded
请让我知道如何修复此错误以及发生此错误的原因 在下面的代码中,我尝试使用支持字段。但是,它们在代码中的使用方式并不能提供预期的输出。 请参阅输出部分

如何显示支持字段的输出

代码

fun main(args: Array<String>) {
println("Hello, World!")

    val p1 = Person_1("jack", 21);
    p1.lastName = "stephan"
    p1.month = "may"
    println("lastName is ${p1.getLastName}")
    println("month is ${p1.getMonth}")


    val p2 = Person_1("jack", 21);
    p2.lastName = "knauth"
    p2.month = "june"
    println(p2.getLastName)
    println(p2.getMonth)

class Person_1 (val name: String, val age : Int) {

//backing field 1
var lastName : String? = null
set(value) {
    if (value?.length == 0) throw IllegalArgumentException("negative values are not allowed")
    field = value
}

val getLastName
get() = {
    lastName
}


//backing field 2
var month : String? = null
set(value) {
    field = value
}

val getMonth
get() = {
    month
}
}
Hello, World!
lastName is () -> kotlin.String?
month is () -> kotlin.String?
() -> kotlin.String?
() -> kotlin.String?

你可以这样摆脱你的getter:

class Person_1 (val name: String, val age : Int) {

    //backing field 1
    var lastName : String? = null
        set(value) {
            if (value?.length == 0) throw IllegalArgumentException("negative values are not allowed")
            field = value
        }

    //backing field 2
    var month : String? = null
        set(value) {
            field = value
        }
}
如果以后需要,您可以这样添加,而无需更改api:

var lastName : String? = null
    get() = field
    set(value) {
        if (value?.length == 0) throw IllegalArgumentException("negative values are not allowed")
        field = value
    }

使用
=
{…}
,但不能同时使用两者。如果您没有
=
括号来声明函数范围,但是使用
={…}
括号现在声明lambda函数。这就是字段返回函数的原因。