Heim >Java >javaLernprogramm >Kotlin für Java-Entwickler (Teil 1)

Kotlin für Java-Entwickler (Teil 1)

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-27 16:04:17922Durchsuche

Kotlin for Java Developers (Part 1)

Java nimmt eine dominante Position in der Programmiersprache ein, daher habe ich bei der Verwendung von Kotlin die gleichen Fehler bei der Verwendung von Java -Entwicklern gesehen. Verstehen Sie mich nicht falsch.

In diesem Artikel informiert Sie den Geruchsgeruch, den ich oft sehe und wie man sie im "Kotlin" ideal realisiert.

Der erste Teil dieser Serie erfolgt:

    Verwenden Sie die Datenklasse
  • Verwenden Sie leere Sicherheit
  • unter den Standardumständen, nicht -mutternd
  • Verwenden Sie die Datenklasse
  • Dieses Thema könnte bald verschwinden, da immer mehr Java -Entwickler auch Erfahrung über die Verwendung von Datensätzen haben. Trotzdem gibt es immer noch einige Unterschiede zwischen dem Java -Datensatz und der Kotlin -Datenklasse.

Java -Methode:

oder als Datensatz:

Kotlin -Methode:
<code class="language-java">public class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
  // Getters, setters, ...
}</code>

<code class="language-java">public record Person(
    String name,
    int age
) {
}</code>
Sie müssen möglicherweise einige Unterschiede zwischen dem Java -Datensatz und der Kotlin -Datenklasse verstehen.

Java -Datensätze und Kotlin -Datenkategorien sind unveränderte Datenträger.

<code class="language-kotlin">data class Person(val name: String, var age: Int)</code>
In Java ist das Feld endgültig versteckt, was nach der Struktur nicht modifiziert werden kann.

Ein weiterer Unterschied besteht darin, dass der Datensatztyp in Java endgültig und versiegelt ist, was bedeutet, dass sie nicht erweitert werden können, und in Kotlin können Sie die Datenklasse erweitern.
  • In Kotlin können Sie auch Methoden für Gleich-, HashCode und ToString abdecken, was in Java unmöglich ist.
  • Kotlin bietet eine Kopiermethode mit Land, die in Java nicht verfügbar ist.
  • Einige Beispiele:
  • Objekte in Java
  • kopieren

kotlin:

oder zersetzt eine Aussage in Java:

<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>
kotlin:

<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>
Referenz

Kotlin Datenklasse
<code class="language-java">String name = p1.getName();
int age = p1.getAge();</code>

baeldung: Kotlin -Datenklasse

<code class="language-kotlin">val (name, age) = p1
println(name) // "John"
println(age) // 42</code>

Verwenden Sie leere Sicherheit
    meiner Meinung nach ist die Luftsicherheit in Kotlin eine der mächtigsten Funktionen. Dies ist eine Funktion, die die Spielregeln ändert und Ihnen viel Zeit und Ärger sparen kann. In Kotlin ist die Luftsicherheit im Typsystem introvertiert, was es einfacher macht, Laufzeitfehler im Zusammenhang mit Luft zu vermeiden.
  • 1. kann leer sein
  • In Kotlin wird der leere Typ explizit deklariert. Dies bedeutet, dass Sie eine Variable haben können, die den leeren Wert speichern kann, aber Sie müssen in der Anweisung explizit angegeben werden.

Nicht -mepty Type (Standard)

standardmäßig sind alle Typen in Kotlin unverzichtbar, was bedeutet, dass die Variable den leeren Wert nicht speichern kann.

kann den Typ

leeren können

Um eine Variable zu deklarieren, die den leeren Wert speichern kann, müssen Sie den Bediener verwenden.

2. Sicherheitsanruf

Eine leistungsstarke Funktion ist der sichere Anrufbetreiber?. Es ermöglicht Ihnen, Methoden oder Zugriffsattribute sicher zu dämpfen, ohne NullPointerexception zu werfen.
<code class="language-kotlin">val name: String = "John" // 不可空
name = null // 编译错误!</code>

Beispiel

<code class="language-java">public class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
  // Getters, setters, ...
}</code>
? Wenn das Objekt leer ist, ist das Berechnungsergebnis des gesamten Ausdrucks null.

3. Elvis Operator (? :)

Elvis -Operator ?: Es ist die Abkürzung des Standardwerts, wenn der Ausdruck auf der linken Seite des Bedieners leer ist.

<code class="language-java">public record Person(
    String name,
    int age
) {
}</code>
4. !!

Sie können es verwenden !! Wenn der Wert null ist, wird NullPointerexception ausgelöst.

<code class="language-kotlin">data class Person(val name: String, var age: Int)</code>
Tipp: Es wird nicht empfohlen, dies zu verwenden !!

5. Die Leere im Funktionsparameter

Wenn Sie die Funktion definieren, können Sie angeben, ob die Parameter leer werden können. In diesem Fall muss der Anrufer damit umgehen.

6. Sicherheitsumwandlung (als Währung)
<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>

Es gibt einen sicheren Konvertierungsoperator als?

7. Luftsicherheit im Lambda -Ausdruck
<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>

Sie können auch Luftsicherheitsfunktionen in Lambda -Ausdruck und hohen Funktionen verwenden:

8. Verwenden Sie die LET -Funktion
<code class="language-java">String name = p1.getName();
int age = p1.getAge();</code>

Die Funktion ist eine Domänenfunktion, mit der Sie Codeblöcke für nicht -Luft -Objekte ausführen können. Es wird normalerweise verwendet, um Code auf dem leeren Objekt auf sichere Weise auszuführen.

Beispiel und Standardwert:

9. Best Practice
<code class="language-kotlin">val (name, age) = p1
println(name) // "John"
println(age) // 42</code>

vermeiden Sie es !!
    Verwenden Sie Sicherheitsanrufe und ELVIS -Vorgänge, um leere Typen sicher zu verarbeiten und Standardwerte anzugeben
  • Verwenden Sie den verfügbaren Typ nur bei Bedarf
  • Referenz:
Kotlin Luftsicherheit

  • unter den Standardumständen, nicht -mutternd
Kotlin fördert stark funktionelle Programmierstile! Für funktionelle Programmierstile spielen Nicht -Varianten eine wichtige Rolle bei der Vermeidung von Fehlern, insbesondere bei Multi -Thread -Anwendungen.

Ich kann jetzt einen separaten Artikel über die funktionale Programmierung in Kotlin oder Java schreiben, aber nun lassen Sie uns der Unveränderlichkeit achten.

Kotlin bevorzugt im Wesentlichen unbefriedigende Objekte als variable Objekte. Dies macht den Code einfacher und vorhersehbar, insbesondere in der gleichzeitigen Umgebung.

1. Unerwartete Variable (Val)

In Kotlin sind die Variablen, die standardmäßig mit VAL -Schlüsselwörtern deklariert sind, unveränderlich. Dies ist sehr nahe an deklarierten endgültigen Variablen in Java, aber es gibt einige wichtige Unterschiede:

Die VAL -Variablen in Kotlin werden tatsächlich gelesen -die Werte, die nach der Initialisierung nicht in sie geändert werden können.

Wenn der Wert ein Objekt ist, kann er jedoch die Attribute des Objekts ändern, es sei denn, das Attribut selbst deklariert den Wert selbst.
  • Beispiel:

Der Unterschied zwischen Java: In Java verwenden wir endgültige Schlüsselwörter, um sicherzustellen, dass die Variable nicht zurückgezahlt werden kann, aber die Objekte, die Punkte immer noch variabel sein können. Der Hauptunterschied in Kotlin besteht darin, dass es standardmäßig standardmäßig auf Variablen erweitert wird, was das Design von prädiktiveren und sichereren Lösungen für die gesamte Anwendung fördert.

variable variable Beispiel: Verwenden Sie die VAR -Schlüsselwörter in Kotlin, damit Sie die Variable neu starten können.

<code class="language-java">public class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
  // Getters, setters, ...
}</code>
Tipp: Kotlin ermutigt so viel wie möglich anstelle von VAR, um eine Nichtabznungen zu gewährleisten.

2. unveränderliche Sammlung

standardmäßig wird es auch aufgefordert, Uncharakterien zu verwenden. Der uncharakteristische Satz verhindert Änderungen nach der Erstellung.

<code class="language-java">public record Person(
    String name,
    int age
) {
}</code>
Wenn Sie die Sammlung ändern müssen, können Sie Mutablelistof () oder andere Variablensammlungstypen verwenden.

<code class="language-kotlin">data class Person(val name: String, var age: Int)</code>
Der Unterschied zwischen Java: In Java ist die Sammlung (wie ArrayList) standardmäßig variabel, was bedeutet, dass sie die Elemente frei ändern kann.

3.. Die Kategorie variabler Daten

kann nicht variable Datenkategorie Die Datenklasse von

Kotlin ist standardmäßig unveränderlich. Beim Definieren der Datenklasse wird das Attribut normalerweise als VAL deklariert, wodurch die Klasse unverändert wird. Dies macht die Klasse sehr geeignet für Wertobjekte, insbesondere wenn es um API, Datenbankdatensätze oder einen anderen Objektstatus geht, der nach der Erstellung nicht geändert werden sollte.

<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>
<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>
4. Die unbefriedigende in der Versiegelungsklasse

Kotlins Versiegelungskurse können ebenfalls unveränderlich sein und sind gut mit nicht nachgewiesenen Datenmodellen abgestimmt. Versiegelungsklassen werden normalerweise verwendet, um begrenzte Klassenstrukturen wie Status oder Reaktion darzustellen, und ihre Unmoral stellt sicher, dass der Zustand oder die Ergebnisse nicht versehentlich geändert werden.

Das obige ist der detaillierte Inhalt vonKotlin für Java-Entwickler (Teil 1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn