我有以下代码:
我们注入接口而不是注入可变的TokenConfigurationConfig。
public interface TokenAuthenticationConfig {
public fun apiKey() : String
}
@Component
@ConfigurationProperties(prefix = "service.api")
public open class TokenAuthenticationConfigImpl : TokenAuthenticationConfig
{
public var apiKey : String
constructor() {
this.apiKey = ""
}
override fun apiKey(): String
{
return this.apiKey
}
}
它运作正常,但只是想知道:
接口的使用会将属性视为不可变,而类的用户会将其视为可变。
答案 0 :(得分:3)
是的,绝对可以定义这样的接口和类。
Kotlin中的任何(公开可见)属性x
表示由编译器生成以满足Java约定的一对方法getX()
和setX(..)
。也就是说,您可以覆盖类中的getX
并添加setX
,这是一致的。
以下是一个例子:
interface SomethingImmutable {
val Somevar: String
}
class MyClass: SomethingImmutable {
override var Somevar: String = "Initial Value"
}