Interfaces¶
KotlinPoet has no trouble with interfaces. Note that interface methods must always be ABSTRACT
.
The modifier is necessary when defining the interface:
val helloWorld = TypeSpec.interfaceBuilder("HelloWorld")
.addProperty("buzz", String::class)
.addFunction(
FunSpec.builder("beep")
.addModifiers(KModifier.ABSTRACT)
.build()
)
.build()
But these modifiers are omitted when the code is generated. These are the default so we don’t need
to include them for kotlinc
’s benefit!
interface HelloWorld {
val buzz: String
fun beep()
}
Kotlin 1.4 adds support for functional interfaces via fun interface
syntax. To create this in
KotlinPoet, use TypeSpec.funInterfaceBuilder()
.
val helloWorld = TypeSpec.funInterfaceBuilder("HelloWorld")
.addFunction(
FunSpec.builder("beep")
.addModifiers(KModifier.ABSTRACT)
.build()
)
.build()
// Generates...
fun interface HelloWorld {
fun beep()
}