【问题标题】:Kotlinpoet How to add inner object class definition?Kotlinpoet 如何添加内部对象类定义?
【发布时间】:2018-09-07 04:26:22
【问题描述】:

我正在尝试在类中生成对象定义。这是一个提炼的版本:

class SomeClass {

   // need to figure out how to generate this
   companion object {

      // and this
      object Constants {
         val SOME_CONSTANT = "CONSTANT VALUE"
      }
   }
}

【问题讨论】:

  • object 更改为 companion object
  • 我想它应该是静态的,因此在 companion object {} 内,但是,我仍然想在伴生对象内生成 object Constants 块。这允许我的常量的命名空间。将更新代码块以反映这一点。

标签: kotlin code-generation kotlinpoet


【解决方案1】:

您可以使用TypeSpec.objecBuilder 创建object,然后使用addType 将其嵌套在一个类中,例如:

val constants = TypeSpec.objectBuilder("Constants")
        .addProperty(PropertySpec.builder("SOME_CONSTANT", String::class)
                .mutable(false)
                .initializer("CONSTANT VALUE")
                .build())
        .build()

val someClass = TypeSpec.classBuilder("SomeClass")
        .addType(constants)
        .build()

【讨论】:

  • 谢谢,这正是我想要的。希望其中一些细微差别在 kotlinpoet 自述文件中得到更好的记录。很可能会用这个例子做一个 PR
  • 看起来它实际上已经在自述文件中,只是没有输出示例。我的错,应该更彻底地阅读。
  • 单元测试也是一个很好的地方,我在那里找到了类似的东西来解决这个问题。
猜你喜欢
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多