KotlinPoet

zyl409214686發表於2018-01-04
簡介

KotlinPoet是一個用於生成.kt原始檔的Kotlin和Java的 API。原始檔生成在進行諸如註釋處理或與後設資料檔案(例如,資料庫模式,協議格式)互動等操作時可能是有用的。 通過生成程式碼,您不需要編寫引用,同時也為後設資料保留真實的單一來源。

示例

這是一個helloworld類:

class Greeter(name: String) {
  val name: String = name

  fun greet() {
    println("Hello, $name")
  }
}

fun main(args: Array<String>) {
  Greeter(args[0]).greet()
}
複製程式碼

使用KotlinPoet生成它:

val greeterClass = ClassName.get("", "Greeter")
val kotlinFile = KotlinFile.builder("", "HelloWorld")
    .addType(TypeSpec.classBuilder("Greeter")
        .primaryConstructor(FunSpec.constructorBuilder()
            .addParameter(String::class, "name")
            .build())
        .addProperty(PropertySpec.builder(String::class, "name")
            .initializer("name")
            .build())
        .addFun(FunSpec.builder("greet")
            .addStatement("println(%S)", "Hello, \$name")
            .build())
        .build())
    .addFun(FunSpec.builder("main")
        .addParameter(ArrayTypeName.of(String::class), "args")
        .addStatement("%T(args[0]).greet()", greeterClass)
        .build())
    .build()

kotlinFile.writeTo(System.out)
複製程式碼

KotlinPoet完整版 API文件,靈感來源於javaPoet

Gradle整合方式:

compile 'com.squareup:kotlinpoet:0.2.0'