实用程序的内部对象 类?

Internal Objects for Utility Classes?

我使用 IntelliJ 的 Kotlin 到 Java 转换工具将一个 Java 实用程序 Class(所有 class 方法都是静态的,无法实例化)转换为科特林

IntelliJ 创建了以下形式的内部对象:

internal object MyObject {  
    const val FIELD1: String = "constant string"

    fun myStaticFn(): String {
        return "hi"
    }
}

这与使用伴生对象制作 class 有何不同?

我同意 JB Nizet 所说的避免创建不必要的 class,还有一个好处是使用 internal,这意味着您不会暴露该实用程序 class 以防您的项目被用作其他项目的依赖项。当然,在某些情况下,您希望拥有一个包含一些有用的实用方法的库,在这种情况下,您可以删除 internal 修饰符,但在许多其他情况下,最好只提供 nice 和 clean API , 同时隐藏您正在使用的实用方法。