使用具有不同名称

时间:2016-10-11 17:37:41

标签: kotlin

我有这段代码:

class AnyUsernamePersistentNodePath(override val value: String) : AnyPersistenceNodePath {
    override val key = "username"    
}

interface AnyPersistenceNodePath {
    val key: String
    val value: String
}

到目前为止,这么好。现在我希望构造函数中的参数value命名为username,而不是value。但是,显然,请保持覆盖接口的属性value。在科特林可以吗?

我知道我能做到:

class AnyUsernamePersistentNodePath(val username: String) : AnyPersistenceNodePath {
    override val key = "username"
    override val value = username
}

但是我想避免它。

1 个答案:

答案 0 :(得分:8)

您可以通过从构造函数参数中删除val来执行您想要的操作,这样它就是参数而不是成员。你的最后一堂课是:

class AnyUsernamePersistentNodePath(username: String) : AnyPersistenceNodePath {
    override val key = "username"
    override val value = username
}

您无法以其他方式更改您真正重写的内容的名称。但是,您可以在构建过程中传递要分配给成员的值,因为我稍微修改了代码版本。