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.