【问题标题】:How to display values from the backing fields如何显示支持字段中的值
【发布时间】:2019-12-21 07:33:53
【问题描述】:

我想运行下面提到的简单示例。 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?

【问题讨论】:

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

标签: kotlin backing-field


【解决方案1】:

你可以像这样摆脱你的吸气剂:

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
    }

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2021-12-02
    • 2017-04-23
    • 2017-12-05
    • 2022-11-18
    相关资源
    最近更新 更多