Der Unterschied zwischen var in Kotlin und Java 10

1. Einleitung

In diesem kurzen Tutorial werden die Unterschiede zwischen var- Schlüsselwörtern in Java und Kotlin behandelt.

Wir behandeln den Bezeichner var in Java ausführlicher in unserem Artikel Java 10 LocalVariable Type-Inference und sprechen in unserem Artikel Kotlin const, var und val Keywords über das Schlüsselwort var in Kotlin.

2. Optionale Typdeklaration gegen keine Typdeklaration

2.1. Kotlin

Wenn wir eine veränderbare Variable deklarieren und gleichzeitig initialisieren, müssen wir den Typ nicht angeben:

var myVariable = 1

Wir können dies jedoch tun, wenn wir uns entscheiden:

var myVariable : Int = 1

Wenn wir eine Variable deklarieren möchten, ohne sie direkt zu initialisieren, müssen wir ihren Typ angeben und können später einen Wert zuweisen:

var myVariable : Int myVariable = 1

2.2. Java

In Java können wir var nur verwenden, wenn wir die Variable vor Ort initialisieren, und wir können keine Typinformationen bereitstellen, selbst wenn wir:

var myVariable = 1;

Folgendes ist ungültig:

var myVariable; myVariable = 1;

Und wir bekommen einen Fehler beim Kompilieren:

Cannot infer type: 'var' on variable without initializer

3. Schlüsselwort vs Kennung

In Kotlin ist var ein Schlüsselwort, was bedeutet, dass wir es nicht als Namen einer Variablen, eines Parameters, einer Methode oder einer Klasse verwenden können. Im Gegensatz dazu definiert Java 10 var als Bezeichner mit besonderer Bedeutung.

Das bedeutet, dass wir in Java 10 weiterhin eine Variable, einen Parameter oder eine Methode mit dem Namen var definieren können :

public void var() {     // do something } public void method(int var) {     // do something } public void method() {     int var = 1;     // do something }

Beachten Sie, dass es ab Java 10 nicht mehr möglich ist, eine Klasse mit dem Namen var zu definieren :

public static class var { }

Der obige Code führt zu einem Fehler bei der Kompilierung:

Error:(1, 1) java: 'var' not allowed here   as of release 10, 'var' is a restricted type name and cannot be used for type declarations

Dies stellt die Abwärtskompatibilität mit älteren Java-Versionen sicher.

4. Veränderlichkeit

Eine mit var in Kotlin deklarierte Variable ist immer veränderbar, während eine mit var in Java deklarierte Variable veränderlich oder endgültig sein kann:

var mutableInt = 1; final var immutableInt = 1;

In Kotlin gibt es kein endgültiges Schlüsselwort - endgültige Variablen werden stattdessen mit val deklariert :

val immutableInt = 1

5. Globale und lokale Nutzung

5.1. Kotlin

In Kotlin können wir var verwenden , um globale und lokale Variablen sowie Klassenmitglieder zu deklarieren:

var myGlobalVar = 3 class MyClass {     var myVar = 3         public fun myFunction() : Int {         var myVariable = 3         return myVariable     } }

5.2. Java

In Java können wir var nur verwenden, um lokale Variablen zu deklarieren:

public class MyClass {     //not possible for member variables     //private var myVar = 1;     public int myFunction() {         var myVariable = 3;         return myVariable;     } }

6. Fazit

In diesem Artikel haben wir den Unterschied zwischen var in Kotlin und Java untersucht. Obwohl beide sehr ähnlich aussehen, gibt es grundlegende Unterschiede zwischen den beiden.

Der wichtigste Unterschied besteht darin, dass es bei var in Kotlin um Veränderlichkeit und bei var in Java um Typinferenz geht.