La différence entre var dans Kotlin et Java 10

1. Introduction

Dans ce court tutoriel, nous couvrirons les différences entre les mots-clés var en Java et Kotlin.

Nous abordons plus en détail l'identifiant var en Java dans notre article Java 10 LocalVariable Type-Inference, et nous parlons du mot-clé var dans Kotlin dans notre article Kotlin const, var et val Keywords.

2. Déclaration de type facultative ou non déclaration de type

2.1. Kotlin

Si nous déclarons une variable mutable et l'initialisons en même temps, nous n'avons pas besoin de spécifier le type:

var myVariable = 1

Cependant, nous pouvons le faire si nous choisissons de:

var myVariable : Int = 1

Si nous voulons déclarer une variable sans l'initialiser directement, nous devons spécifier son type , et nous pouvons attribuer une valeur plus tard:

var myVariable : Int myVariable = 1

2.2. Java

En Java, nous ne pouvons utiliser var que si nous initialisons la variable sur place, et nous ne pouvons pas fournir d'informations de type même si nous voulons:

var myVariable = 1;

Ce qui suit n'est pas valide:

var myVariable; myVariable = 1;

Et nous obtenons une erreur de compilation:

Cannot infer type: 'var' on variable without initializer

3. Mot-clé vs identifiant

Dans Kotlin, var est un mot-clé, ce qui signifie que nous ne pouvons pas l'utiliser comme nom d'une variable, d'un paramètre, d'une méthode ou d'une classe. En revanche, Java 10 définit var comme un identifiant avec une signification particulière.

Cela signifie que dans Java 10, nous pouvons toujours définir une variable, un paramètre ou une méthode avec le nom var :

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

Gardez à l'esprit qu'à partir de Java 10, il n'est plus possible de définir une classe avec le nom var :

public static class var { }

Le code ci-dessus entraîne une erreur de compilation:

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

Cela garantit une compatibilité descendante avec les anciennes versions de Java.

4. Mutabilité

Une variable déclarée avec var dans Kotlin est toujours mutable, tandis qu'une variable déclarée avec var en Java peut être mutable ou définitive:

var mutableInt = 1; final var immutableInt = 1;

En Kotlin, il n'y a pas finale mot - clé - les variables finales sont déclarées avec val à la place:

val immutableInt = 1

5. Utilisation globale ou locale

5.1. Kotlin

Dans Kotlin, nous pouvons utiliser var pour déclarer des variables globales et locales, ainsi que des membres de classe:

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

5.2. Java

En Java, nous ne pouvons utiliser var que pour déclarer des variables locales:

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

6. Conclusion

Dans cet article, nous avons examiné la différence entre var dans Kotlin et Java. Même si les deux semblent très similaires, il existe des différences fondamentales entre les deux.

La différence la plus importante est que var en Kotlin concerne la mutabilité et var en Java concerne l'inférence de type.