Zoeken…


Opmerkingen

Een typeveilige bouwer is een concept in plaats van een taalkenmerk, dus het is niet strikt geformaliseerd.

Een typische structuur van een typeveilige bouwer

Een enkele bouwfunctie bestaat meestal uit 3 stappen:

  1. Maak een object.
  2. Voer lambda uit om het object te initialiseren.
  3. Voeg het object toe om te structureren of retourneer het.

Type-veilige bouwers in Kotlin-bibliotheken

Het concept van type-veilige builders wordt veel gebruikt in sommige Kotlin-bibliotheken en frameworks, bijvoorbeeld:

  • Anko
  • Wasabi
  • Ktor
  • spec

Type-veilige boomstructuurbouwer

Builders kunnen worden gedefinieerd als een set uitbreidingsfuncties die lambda-expressies met ontvangers als argumenten gebruiken. In dit voorbeeld wordt een menu van een JFrame gebouwd:

import javax.swing.*

fun JFrame.menuBar(init: JMenuBar.() -> Unit) {
    val menuBar = JMenuBar()
    menuBar.init()
    setJMenuBar(menuBar)
}

fun JMenuBar.menu(caption: String, init: JMenu.() -> Unit) {
    val menu = JMenu(caption)
    menu.init()
    add(menu)
}

fun JMenu.menuItem(caption: String, init: JMenuItem.() -> Unit) {
    val menuItem = JMenuItem(caption)
    menuItem.init()
    add(menuItem)
}

Deze functies kunnen vervolgens worden gebruikt om op eenvoudige wijze een boomstructuur van objecten te bouwen:

class MyFrame : JFrame() {
    init {
        menuBar {
            menu("Menu1") {
                menuItem("Item1") {
                    // Initialize MenuItem with some Action
                }
                menuItem("Item2") {}
            }
            menu("Menu2") {
                menuItem("Item3") {}
                menuItem("Item4") {}
            }
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow