Kotlin Academy · Oppitunti

Kotlin-lähdetiedostojen luominen KotlinPoetilla

Käyttäkää KotlinPoetia KSP-prosessorissa tyyppiturvallisen Kotlin-koodin luomiseen.

Oppitunti 3/414 vaihetta

Kotlin-lähdetiedostojen luominen KotlinPoetilla on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mikä KotlinPoet on

KotlinPoet on Squaren Kotlin-API .kt-lähdetiedostojen ohjelmalliseen luomiseen. Se tuottaa hyvin muotoiltua ja idiomista Kotlin-koodia ja integroituu luontevasti KSP:n CodeGenerator-luokkaan.

Riippuvuuden lisääminen

Lisätkää KotlinPoet prosessorimoduuliinne:

dependencies {
    implementation("com.squareup:kotlinpoet:1.17.0")
    implementation("com.squareup:kotlinpoet-ksp:1.17.0") // KSP extensions
}

FileSpec: luodun tiedoston juuri

FileSpec.builder(packageName, fileName) on aloituskohta. Lisätkää siihen tyypit, funktiot ja ominaisuudet ja kirjoittakaa tulos sitten KSP:n CodeGenerator-luokan kautta:

val file = FileSpec.builder("com.example.generated", "MyFactory")
    .addType( /* TypeSpec here */ )
    .build()

TypeSpec: luokan määrittäminen

Käyttäkää luokille TypeSpec.classBuilder()-funktiota, objekteille objectBuilder()-funktiota ja rajapinnoille interfaceBuilder()-funktiota. Ketjuttakaa muodostimen kutsuja lisätäksenne funktioita, ominaisuuksia ja ylirajapintoja:

val classSpec = TypeSpec.classBuilder("MyFactory")
    .addModifiers(KModifier.PUBLIC)
    .addFunction( /* FunSpec */ )
    .build()

FunSpec: funktion luominen

FunSpec.builder(name) luo funktion. Käyttäkää addParameter()-, returns()- ja addStatement()-funktioita sen allekirjoituksen ja rungon muodostamiseen:

val funSpec = FunSpec.builder("create")
    .addParameter("name", String::class)
    .returns(String::class)
    .addStatement("return "Hello, %L!", name")
    .build()

PropertySpec: ominaisuuden luominen

Käyttäkää PropertySpec.builder(name, type)-funktiota ominaisuuksien luomiseen. Määrittäkää KModifier.PRIVATE tai KModifier.OVERRIDE, tai käyttäkää mutable()-funktiota var-ominaisuuden luomiseen:

val propSpec = PropertySpec.builder("tag", String::class)
    .initializer("%S", "MyClass")
    .addModifiers(KModifier.PRIVATE)
    .build()

Koodin muotoilumääritteet

KotlinPoet käyttää muotoilumääritteitä funktioissa addStatement() ja initializer():

  • %L — literaali (ilman lainausmerkkejä)
  • %S — merkkijonoliteraali (lainausmerkeillä)
  • %T — tyyppinimi (tuonnit käsitellään automaattisesti)
  • %N — nimi (määrityksen tai merkkijonon nimi)

Automaattiset tuonnit määritteellä %T

Kun käytätte %T-määritettä ClassName-arvon kanssa, KotlinPoet lisää tarvittavan tuonnin automaattisesti. Teidän ei tarvitse kirjoittaa tuontilausekkeita itse:

val listType = ClassName("kotlin.collections", "List")
val funSpec = FunSpec.builder("items")
    .returns(listType.parameterizedBy(String::class.asTypeName()))
    .addStatement("return emptyList()")
    .build()

Kirjoittaminen KSP:n CodeGeneratoriin

Käyttäkää kotlinpoet-ksp-siltaa kirjoittaaksenne luodun FileSpec-tiedoston KSP:n CodeGenerator-luokan kautta ja säilyttääksenne inkrementaalisen koonnin metatiedot:

file.writeTo(
    codeGenerator = codeGenerator,
    aggregating = false
)

Laajennusfunktioiden luominen

Käyttäkää FunSpec.builder(name).receiver(type)-kutsua laajennusfunktioiden luomiseen:

val extFun = FunSpec.builder("toJson")
    .receiver(ClassName("com.example", "User"))
    .returns(String::class)
    .addStatement("return Gson().toJson(this)")
    .build()

Käytännön käyttötapaus: tehdasgeneraattori

KSP-prosessori merkitsee data-luokat @AutoFactory-annotaatiolla ja käyttää KotlinPoetia companion-tehdasobjektin luomiseen kullekin luokalle. Luotu tiedosto sijoitetaan samaan pakettiin alkuperäisen luokan kanssa.

Luodun koodin testaaminen

Käyttäkää KotlinPoetin FileSpec.toString()-funktiota yksikkötesteissä luodun lähdetekstin tarkistamiseen kirjoittamatta sitä levylle. kotlin-compile-testing-ksp-kirjastolla voitte kääntää ja suorittaa luotua koodia testeissä.

Pikatarkistus

Mikä KotlinPoetin muotoilumäärite lisää tarvittavan tuonnin automaattisesti viitatulle luokalle?

Kertaus: Kotlin-lähdetiedostojen luominen KotlinPoetilla

Keskeiset opit:

  • FileSpec → ylätason tiedosto; TypeSpec → luokka/objekti/rajapinta; FunSpec → funktio; PropertySpec → ominaisuus
  • Käytä tyyppiviittauksiin muotoa %T — importit lisätään automaattisesti
  • Kirjoita tiedosto kutsumalla KSP-prosessoreissa file.writeTo(codeGenerator)
  • Käytä FileSpec.toString()-metodia luodun tulosteen yksikkötestaukseen
Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Kotlin-lähdetiedostojen luominen KotlinPoetilla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “Kotlin-lähdetiedostojen luominen KotlinPoetilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Kotlin-lähdetiedostojen luominen KotlinPoetilla”?

Käyttäkää KotlinPoetia KSP-prosessorissa tyyppiturvallisen Kotlin-koodin luomiseen. Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Kotlin-lähdetiedostojen luominen KotlinPoetilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Academy-oppitunnilla?

Kyllä. Jokainen Kotlin Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. KSP vs KAPT: miksi KSP on nopeampi
  2. Ensimmäisen SymbolProcessorin kirjoittaminen
  3. Kotlin-lähdetiedostojen luominen KotlinPoetilla
  4. KSP-prosessoreiden integrointi Gradle-koontiin
← Takaisin: Kotlin Academy