La differenza tra var in Kotlin e Java 10

1. Introduzione

In questo breve tutorial, tratteremo le differenze tra le parole chiave var in Java e Kotlin.

Copriamo l'identificatore var in Java in modo più approfondito nel nostro articolo Java 10 LocalVariable Type-Inference, e parliamo della parola chiave var in Kotlin nel nostro articolo Kotlin const, var e val Keywords.

2. Dichiarazione di tipo facoltativa e dichiarazione di assenza di tipo

2.1. Kotlin

Se dichiariamo una variabile mutabile e la inizializziamo allo stesso tempo, non è necessario specificare il tipo:

var myVariable = 1

Tuttavia, possiamo farlo se scegliamo di:

var myVariable : Int = 1

Se vogliamo dichiarare una variabile senza inizializzarla direttamente, dobbiamo specificarne il tipo e possiamo assegnare un valore in seguito:

var myVariable : Int myVariable = 1

2.2. Giava

In Java, possiamo usare var solo se inizializziamo la variabile sul posto e non possiamo fornire informazioni sul tipo anche se vogliamo:

var myVariable = 1;

Quanto segue non è valido:

var myVariable; myVariable = 1;

E otteniamo un errore in fase di compilazione:

Cannot infer type: 'var' on variable without initializer

3. Parola chiave vs identificatore

In Kotlin, var è una parola chiave, il che significa che non possiamo usarla come nome di una variabile, parametro, metodo o classe. Al contrario, Java 10 definisce var come un identificatore con un significato speciale.

Ciò significa che in Java 10 possiamo ancora definire una variabile, un parametro o un metodo con il nome var :

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

Tieni presente che, a partire da Java 10, non è più possibile definire una classe con il nome var :

public static class var { }

Il codice precedente genera un errore in fase di compilazione:

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

Ciò garantisce la compatibilità con le versioni precedenti di Java.

4. Mutevolezza

Una variabile dichiarata con var in Kotlin è sempre mutabile, mentre una variabile dichiarata con var in Java può essere mutabile o finale:

var mutableInt = 1; final var immutableInt = 1;

In Kotlin, non c'è finale parola chiave - le variabili finali sono dichiarate con val invece:

val immutableInt = 1

5. Utilizzo globale vs locale

5.1. Kotlin

In Kotlin, possiamo usare var per dichiarare variabili globali e locali, nonché membri della classe:

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

5.2. Giava

In Java, possiamo usare var solo per dichiarare le variabili locali:

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

6. Conclusione

In questo articolo, abbiamo esaminato la differenza tra var in Kotlin e Java. Anche se entrambi sembrano molto simili, ci sono differenze fondamentali tra i due.

La differenza più importante è che var in Kotlin riguarda la mutabilità e var in Java riguarda l'inferenza del tipo.