Recherche…


Remarques

Un générateur de type sécurisé est un concept, et non une fonctionnalité de langage, de sorte qu'il n'est pas strictement formalisé.

Une structure typique d'un constructeur de type sécurisé

Une seule fonction de constructeur se compose généralement de 3 étapes:

  1. Créez un objet.
  2. Exécutez lambda pour initialiser l'objet.
  3. Ajoutez l'objet pour le structurer ou le renvoyer.

Constructeurs de type sécurisé dans les bibliothèques de Kotlin

Le concept de générateurs sans risque de type est largement utilisé dans certaines bibliothèques et structures de Kotlin, par exemple:

  • Anko
  • Wasabi
  • Ktor
  • Spéc

Générateur d'arborescence sécurisé

Les générateurs peuvent être définis comme un ensemble de fonctions d'extension prenant les expressions lambda avec des récepteurs comme arguments. Dans cet exemple, un menu de JFrame est en cours de construction:

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)
}

Ces fonctions peuvent ensuite être utilisées pour créer facilement une arborescence d'objets:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow