Erstellen Konstanten in Kotlin

David Mbochi Njonge 18 August 2022
  1. Verwenden Sie Klassenkonstanten in Kotlin
  2. Verwenden Sie ein Singleton in Kotlin
  3. Verwenden Sie Konstanten der obersten Ebene in Kotlin
  4. Verwenden Sie eine separate Datei mit Konstanten in Kotlin
  5. Fazit
Erstellen Konstanten in Kotlin

Eine Konstante wird verwendet, um Daten zu speichern, deren Werte immer bekannt sind, und die Daten ändern sich während der Programmausführung nicht. Konstanten unterscheiden sich von Variablen dadurch, dass Variablen die Daten während der Programmausführung verändern können.

Angenommen, Sie entwickeln einen Motorradsimulator. Verschiedene Eigenschaften des Motorrads werden sich während seines gesamten Lebens nicht ändern, wie zum Beispiel die Anzahl der Räder.

Um sicherzustellen, dass sich die Anzahl der Räder nicht ändert, deklarieren wir in der Anwendung eine Konstante und ordnen sie der Anzahl der Räder zu, die ein Motorrad haben kann. Wir verwenden Konstanten, um Fehler durch Benutzereingaben zu vermeiden, z. B. die Bereitstellung von vier Rädern für ein Motorrad anstelle von zwei.

In diesem Tutorial erfahren Sie, wie Sie Konstanten in Kotlin erstellen, welche Namenskonvention verwendet wird und wie Sie sie in Ihre Anwendung aufnehmen.

Verwenden Sie Klassenkonstanten in Kotlin

Gehen Sie zu IntelliJ und wählen Sie Datei > Neu > Projekt, um ein neues Kotlin-Projekt zu erstellen. Geben Sie als Projektnamen kotlinConstants oder einen beliebigen Namen ein.

Wählen Sie Kotlin im Abschnitt Sprache und Intellij im Abschnitt Build-System aus. Klicken Sie auf die Schaltfläche Erstellen, um das Projekt zu erstellen.

Erstellen Sie die Ordnerstruktur com/constants unter dem Ordner kotlin. Erstellen Sie eine Main.kt-Datei im Ordner constants und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein.

package com.constants

class Car(private val name: String){
    /**
     * This is a constant that is only used
     * inside this class
     */
    private val numberOfWheels = 4
    /**
     * The companion object defines a constant
     * that exists only as a single copy and
     * Can also be used outside the class
     */
    companion object{
        const val NUMBER_OF_WHEELS = 4
    }
    fun showMessage(): String{
        return "A ${this.name} has ${this.numberOfWheels} wheels"
    }

}
fun main() {
    val nissan = Car("Nissan");
    println(nissan.showMessage());
    println("Number of wheels = ${Car.NUMBER_OF_WHEELS}");
}

Wir haben zwei Konstanten innerhalb der Car-Klasse deklariert; Die erste Konstante, die mit dem Schlüsselwort private deklariert wurde, ist nur für die Verwendung in dieser Klasse gedacht und kann nicht von außerhalb der Klasse aufgerufen werden.

Was die Namenskonvention betrifft, haben wir die Camel-Case-Namenskonvention verwendet, da sie nur innerhalb der Klasse verwendet wird.

Die zweite Konstante wird innerhalb eines Begleitobjekts in der Klasse deklariert. Ein Begleitobjekt wird verwendet, um Konstanten und Funktionen zu deklarieren, die zu dieser Klasse gehören, was bedeutet, dass es nicht unter Verwendung der Klassenobjekte instanziiert werden kann.

Diese Konstanten ähneln statischen Feldern und Methoden in Java. Um die Konstanten aufzurufen, verwenden wir normalerweise die Klasse, da nur eine Kopie der Konstanten existiert.

Auf die in einem Companion-Objekt deklarierten Konstanten kann von außerhalb der Klasse zugegriffen werden, und die für diese Konstanten verwendete Namenskonvention ist eine Kombination aus Großbuchstaben und Unterstrichen.

Die main methode ruft Car() auf, um ein neues Car-Objekt zu erstellen. Die Methode showMessage() verwendet die innerhalb der Klasse verwendete Konstante, um eine Nachricht mit dem Wert an der Konsole zu protokollieren.

Die letzte println()-Nachricht protokolliert den Wert der Konstante, die mit einem Begleitobjekt deklariert wurde. Führen Sie den Code aus, um zu überprüfen, ob das Programm Folgendes ausgibt.

Ausgabe:

A Nissan has 4 wheels
Number of wheels = 4

Verwenden Sie ein Singleton in Kotlin

Singleton ist ein Entwurfsmuster in der Programmierung, insbesondere in Hochsprachen. Das Singleton-Entwurfsmuster wird verwendet, wenn wir Ressourcen haben, die in der Anwendung gemeinsam genutzt werden müssen, und in Situationen, in denen es teuer ist, die Ressourcen zu erstellen.

Beachten Sie, dass bei Verwendung eines Singletons während der gesamten Lebensdauer der Anwendung nur eine Instanz erstellt wird.

Kommentieren Sie den vorherigen Code und kopieren Sie den folgenden Code und fügen Sie ihn nach dem Kommentar in die Datei Main.kt ein.

package com.constants

object Configuration{
    const val USERNAME = "john"
    const val PASSWORD = "1234"
}

fun userLogin(user: String, pass: String): String{
    return "$user logged in with password $pass"
}

fun main() {
    println(userLogin(Configuration.USERNAME,
        Configuration.PASSWORD));
}

In diesem Beispiel haben wir ein Singleton mit dem Schlüsselwort object erstellt. Verwenden Sie diese Syntax immer, wenn Sie in Kotlin einen Singleton erstellen möchten.

Hinter den Kulissen macht der Compiler den Konstruktor privat, erstellt eine Referenz unserer Konfiguration und initialisiert sie in einem statischen Block. Der Singleton wird erst initialisiert, wenn wir zum ersten Mal auf statische Felder zugreifen.

userLogin() ist eine benutzerdefinierte Methode, die wir definiert haben, um die Singleton-Eigenschaften zu nutzen. Um auf die Werte zuzugreifen, rufen wir den Singleton-Namen gefolgt vom Eigenschaftsnamen auf.

Dies ähnelt dem, was wir mit Konstanten gemacht haben, die in einem Companion-Objekt deklariert wurden, aber dieser Ansatz ist weniger ressourcenintensiv. Führen Sie den Code aus und überprüfen Sie, ob das Programm Folgendes ausgibt.

Ausgabe:

john logged in with password 1234

Verwenden Sie Konstanten der obersten Ebene in Kotlin

Kommentieren Sie den vorherigen Code und kopieren Sie den folgenden Code und fügen Sie ihn nach dem Kommentar in die Datei Main.kt ein.

package com.constants

const val CONNECTION_POOL = 10

class DBDriver{
   companion object{
       fun isConnectionExceeded(value: Int): Boolean{
           return (value > CONNECTION_POOL)
       }
   }
}

fun main() {
    println(DBDriver.isConnectionExceeded(11));
}

Konstanten der obersten Ebene sind nicht in einer Funktion, Klasse oder Schnittstelle eingeschlossen, was bedeutet, dass Sie sie von außerhalb der Klasse aufrufen können, ohne ein Objekt zu erstellen.

In diesem Beispiel haben wir eine Konstante der obersten Ebene mit dem Namen CONNECTION_POOL deklariert und sie innerhalb der Methode isConnectionExceeded() verbraucht, indem wir ihren Namen übergeben.

Führen Sie den Code aus und beachten Sie, dass der konstante Wert wie gewohnt gelesen wird, um die erwarteten Berechnungen durchzuführen, wie unten gezeigt.

Ausgabe:

true

Verwenden Sie eine separate Datei mit Konstanten in Kotlin

Erstellen Sie ein neues Paket namens consts im Ordner com. Erstellen Sie eine Datei namens NetConstants.kt im Ordner consts und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein.

package com.consts

const val PORT = 8080
const val PROTOCOL = "DNS"
const val HOST_ADDRESS = "192.168.1.0"

Die in der obigen Datei definierten Konstanten ähneln den Konstanten der obersten Ebene, werden jedoch zusammen mit anderen Anwendungsteilen in einer separaten Datei deklariert.

Das folgende Beispiel zeigt die Verwendung von Konstanten in einer separaten Datei derselben Anwendung. Kommentieren Sie das letzte Beispiel, das wir in der Datei Main.kt behandelt haben, und kopieren Sie den folgenden Code und fügen Sie ihn nach dem Kommentar in die Datei ein.

package com.constants

import com.consts.HOST_ADDRESS
import com.consts.PORT
import com.consts.PROTOCOL

class Server{
   companion object{
       fun connectServer(port: Int, protocol: String, host: String): String{
           return "application connected to " +
                   "$host using port " +
                   "$port through" +
                   " $protocol"
       }
   }
}
fun main() {
    println(Server.connectServer(PORT, PROTOCOL, HOST_ADDRESS));
}

Dieses Beispiel definiert die Methode connectServer(), die in einem Companion-Objekt einer Klasse deklariert ist. Die Methode verbraucht die drei Konstanten, die wir in der Datei NetConstants.kt definiert haben.

Dies wird erreicht, indem der Name der Konstante an die Methode übergeben und der Name der vollständig qualifizierten Konstante in die Klasse importiert wird. Das Folgende ist die Ausgabe der Anwendung, nachdem wir sie ausgeführt haben:

application connected to 192.168.1.0 using port 8080 through DNS

Fazit

In diesem Tutorial haben wir die verschiedenen Möglichkeiten kennengelernt, mit denen wir Konstanten in einer Kotlin-Anwendung erstellen können. Zu den Ansätzen, die wir gelernt haben, gehören: Verwenden von Klassenkonstanten, Singleton- und Top-Level-Konstanten, und schließlich haben wir behandelt, wie Konstanten verwendet werden, die in einer separaten Datei deklariert sind.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub