Представлено Fleshgrinder на GitHub.
Как можно реализовать Comparable
для класса, который создается в данный момент?
Есть метод ParameterizedTypeName.get(Comparable::class, ?)
, но непонятно, как передать второй параметр. Единственное, что доступно при создании класса, это его ClassName
.
Минимальный пример:
FileSpec.builder("com.fleshgrinder", "KotlinPoet").apply {
val className = ClassName("com.fleshgrinder", "KotlinPoet")
addType(TypeSpec.classBuilder(className).apply {
addSuperinterface(ParameterizedTypeName.get(Comparable::class, Any::class))
}.build())
}.build().writeTo(System.out)
Что генерирует:
package com.fleshgrinder
import kotlin.Any
import kotlin.Comparable
class KotlinPoet : Comparable<Any>
Что я хотел бы иметь:
package com.fleshgrinder
class KotlinPoet : Comparable<KotlinPoet>