Kotlin 嵌套对象 类

Kotlin Nested Object Classes

好的,我已经开始学习 kotlin 一周了,我喜欢 language:p 除了扩展函数的强大实用性之外,我觉得他们缺乏创建名称空间的正确方法,例如 java utility 类 (xxxUtil).

我最近开始使用这种方法,我不确定它是否正确,我希望得到 Kotlin 经验丰富的用户的一些反馈。

这样做是否有效且适当:

object RealmDb {

   private val realmInstance by lazy{ Realm.getInstance(MainApplication.instance) }

   private fun wrapInTransaction(code:() -> Unit){
       realmInstance.beginTransaction();
       code.invoke()
       realmInstance.commitTransaction();
}
   object NormaNote{
      fun create(...) {...}
      fun update(...) {...}
   }
}

因此,每当我想将一些 NormalNote 值更新到 Realm 数据库时,我都会执行以下操作:

RealmDb.NormaNote.create(title.text.toString(), note.text.toString())

这是常见的事情吗?有更好的方法吗?据我了解,这是单例嵌套,我不认为这有任何问题,我只是不喜欢将这种常见的东西放在 类 里面需要实例化。在旧 java 中,我选择静态 类

官方推荐的在 Kotlin 中创建命名空间的方法是将不需要的属性和函数放在 类 文件的顶层,并使用 package 语句创建一个命名空间层次结构。我们将在 Java 中创建实用程序 类 的做法视为该语言缺陷的解决方法,而不是其他语言应遵循的良好做法。

在您的示例中,我会将所有代码放在 top-level 函数和属性中。

我不知道其余代码,但我知道您不必在 code 上调用 .invoke ()。 invoke 方法总是可以缩短为直接调用,在本例中为 code ().