oop - 在 kotlin 的接口(interface)中声明接口(interface)对象本身有什么好处

标签 oop kotlin interface

例如

一个接口(interface)

interface StateInterface {

    val variationTypes: List<VariationType>
        get() = emptyList()

    object EMPTY : StateInterface
}

然后在这样的actionbean中声明它
open val stateInterface: StateInterface = StateInterface.EMPTY
它只是创建一个新界面吗?为什么我们需要这样做?

最佳答案

你不需要那样做。

interface StateInterface {

    val variationTypes: List<VariationType>
        get() = emptyList()

}

object EMPTY : StateInterface

可以正常工作,但作者决定他们希望使用阅读 StateInterface.EMPTY而不仅仅是EMPTY .

选择这种方式的一个优点或原因是 EMPTY键入 StateInterface. 后出现在代码完成中使其更容易找到。

Code Completion

另一个可读性优势是任何引用 StateInterface.EMPTY不需要额外的import如果它不是嵌套对象,他们会这样做。
import com.example.StateInterface

val x = StateInterface.EMPTY

这个位open val stateInterface: StateInterface = StateInterface.EMPTY是对象的属性。它是 open所以后代实现可以override它。如果他们不这样做,StateInterface.EMPTY将是此属性的值。

关于oop - 在 kotlin 的接口(interface)中声明接口(interface)对象本身有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53381142/

相关文章:

java - 工厂由a配置。对象的类 - 如何做得好?

Kotlin:Kotlin-script (.kts) 不能使用常规代码?

java - 无法将带有类型参数的 Java 类重写为 Kotlin

java - 无法访问在 Java 接口(interface)中声明的常量/最终字符串数组值

oop - 在 OOP 中,接口(interface)在不同上下文中的不同含义是什么?

php - CodeIgniter - 如何在整个程序中使用对象变量

Java 类收集所有子属性

ios - 为什么应用委托(delegate)类无法初始化?

java - Android - 未经系统许可杀死另一个应用程序

类层次结构中的 Java 可选接口(interface)