Kotlin:由具有可变属性的类实现的具有不可变属性的接口
我有以下代码:Kotlin:由具有可变属性的类实现的具有不可变属性的接口,kotlin,Kotlin,我有以下代码: 解决了Spring中@ConfigurationProperties类需要遵循JavaBeans约定和可变属性的限制 我们注入接口,而不是注入可变的TokenConfigurationConfig。 public interface TokenAuthenticationConfig { public fun apiKey() : String } @Component @ConfigurationProperties(prefix = "service.api
- 解决了Spring中@ConfigurationProperties类需要遵循JavaBeans约定和可变属性的限制李>
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
}
}
它工作正常,但只是想知道:
- 在Kotlin中是否可以定义一个具有不可变属性的接口,该接口由具有可变属性的类实现李>
接口的使用会将属性视为不可变的,而类的用户会将其视为可变的 是的,定义这样的接口和类是完全可能的 Kotlin中的任何(公共可见)属性
x
表示编译器为满足Java约定而生成的一对方法getX()
和setX(…)
。也就是说,您可以在类中重写getX
,并添加setX
,这是一致的
以下是一个例子:
interface SomethingImmutable {
val Somevar: String
}
class MyClass: SomethingImmutable {
override var Somevar: String = "Initial Value"
}
事实上,它是有效的,并且还通过添加“override”修饰符(我以前缺少这个)来强制您确认意图。