使用具有不同名称的构造函数参数覆盖interface属性

Héc*_*tor 8 kotlin

我有这个代码:

class AnyUsernamePersistentNodePath(override val value: String) : AnyPersistenceNodePath {
    override val key = "username"    
}
Run Code Online (Sandbox Code Playgroud)

interface AnyPersistenceNodePath {
    val key: String
    val value: String
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在我希望value命名构造函数中的参数username,而不是value.但是,显然,保持覆盖接口的属性value.在Kotlin有可能吗?

我知道我能做到:

class AnyUsernamePersistentNodePath(val username: String) : AnyPersistenceNodePath {
    override val key = "username"
    override val value = username
}
Run Code Online (Sandbox Code Playgroud)

但我想避免它.

Jay*_*ard 8

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

class AnyUsernamePersistentNodePath(username: String) : AnyPersistenceNodePath {
    override val key = "username"
    override val value = username
}
Run Code Online (Sandbox Code Playgroud)

你无法改变你真正重写的东西的名称.但是,您可以在构建过程中传递要分配给成员的值,因为我稍微修改了代码版本.