我有这段代码:
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
}
但是我想避免它。
答案 0 :(得分:8)
您可以通过从构造函数参数中删除val
来执行您想要的操作,这样它就是参数而不是成员。你的最后一堂课是:
class AnyUsernamePersistentNodePath(username: String) : AnyPersistenceNodePath {
override val key = "username"
override val value = username
}
您无法以其他方式更改您真正重写的内容的名称。但是,您可以在构建过程中传递要分配给成员的值,因为我稍微修改了代码版本。