gpt4 book ai didi

Kotlin : Interface with immutable property implemented by class with mutable

转载 作者:行者123 更新时间:2023-12-01 13:48:28 25 4
gpt4 key购买 nike

我有以下代码:

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

我们注入(inject)接口(interface),而不是注入(inject)可变的 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 中是否可以定义一个具有不可变属性的接口(interface),该接口(interface)由具有可变属性的类实现。

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

最佳答案

是的,定义这样的接口(interface)和类绝对是可能的。

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

这是一个例子:

interface SomethingImmutable {
val Somevar: String
}

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

关于 Kotlin : Interface with immutable property implemented by class with mutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33863333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com