Kotlin:具有可变属性

时间:2015-11-23 03:32:03

标签: kotlin

我有以下代码:

  • 解决Spring中的限制,其中@ConfigurationProperties类需要遵循具有可变属性的JavaBeans约定。

我们注入接口而不是注入可变的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
    }
}

它运作正常,但只是想知道:

  • 在Kotlin中是否可以定义具有immutable属性的接口,该接口由具有mutable属性的类实现。

接口的使用会将属性视为不可变,而类的用户会将其视为可变。

1 个答案:

答案 0 :(得分:3)

是的,绝对可以定义这样的接口和类。

Kotlin中的任何(公开可见)属性x表示由编译器生成以满足Java约定的一对方法getX()setX(..)。也就是说,您可以覆盖类中的getX并添加setX,这是一致的。

以下是一个例子:

interface SomethingImmutable {
    val Somevar: String
}

class MyClass: SomethingImmutable {
    override var Somevar: String = "Initial Value"
}