Forskjellen mellom var i Kotlin og Java 10
1. Introduksjon
I denne korte veiledningen vil vi dekke forskjellene mellom var nøkkelord i Java og Kotlin.
Vi dekker identifikatoren var i Java nærmere i artikkelen Java 10 LocalVariable Type-Inference, og vi snakker om nøkkelordet var i Kotlin i vår artikkel Kotlin const, var og val Keywords.
2. Valgfri typedeklarasjon vs ingen typedeklarasjon
2.1. Kotlin
Hvis vi erklærer en foranderlig variabel og initialiserer den samtidig, trenger vi ikke å spesifisere typen:
var myVariable = 1
Vi kan imidlertid gjøre det hvis vi velger å:
var myVariable: Int = 1
Hvis vi vil deklarere en variabel uten å initialisere den direkte, må vi spesifisere dens type, og vi kan tildele en verdi senere:
var myVariable: Int myVariable = 1
2.2. Java
I Java kan vi bare bruke var hvis vi initialiserer variabelen på stedet, og vi ikke kan gi typeinformasjon selv om vi vil:
var myVariable = 1;
Følgende er ugyldige:
var myVariable; myVariable = 1;
Og vi får en kompileringstidsfeil:
Kan ikke utlede typen: 'var' på variabel uten initialisering
3. Keyword vs Identifier
I Kotlin, var er et nøkkelord, som betyr at vi ikke kan bruke det som navnet på en variabel, parameter, metode eller klasse. I motsetning definerer Java 10 var som en identifikator med spesiell betydning.
Det betyr at vi i Java 10 fortsatt kan definere en variabel, parameter eller metode med navnet var:
offentlig ugyldig var () {// gjør noe} offentlig ugyldig metode (int var) {// gjør noe} offentlig ugyldig metode () {int var = 1; // gjør noe }
Husk at det fra og med Java 10 ikke lenger er mulig å definere en klasse med navnet var:
offentlig statisk klasse var {}
Ovennevnte kode resulterer i en kompileringsfeil:
Feil: (1, 1) java: 'var' er ikke tillatt her fra versjon 10, 'var' er et begrenset type navn og kan ikke brukes til typedeklarasjoner
Dette sikrer bakoverkompatibilitet med eldre Java-versjoner.
4. Mutabilitet
En variabel erklært med var i Kotlin er alltid foranderlig, mens en variabel erklært med var i Java kan være foranderlig eller endelig:
var mutableInt = 1; final var immutableInt = 1;
I Kotlin er det ingen endelig nøkkelord - endelige variabler deklareres med val i stedet:
val immutableInt = 1
5. Global vs lokal bruk
5.1. Kotlin
I Kotlin kan vi bruke var å erklære globale og lokale variabler, samt klassemedlemmer:
var myGlobalVar = 3 klasse MyClass {var myVar = 3 offentlig moro myFunction (): Int {var myVariable = 3 return myVariable}}
5.2. Java
I Java kan vi bruke var bare for å erklære lokale variabler:
offentlig klasse MyClass {// ikke mulig for medlemsvariabler // private var myVar = 1; public int myFunction () {var myVariable = 3; returner myVariable; }}
6. Konklusjon
I denne artikkelen så vi på forskjellen mellom var i Kotlin og Java. Selv om begge ser veldig like ut, er det grunnleggende forskjeller mellom de to.
Den viktigste forskjellen er at var i Kotlin handler om mutabilitet, og var i Java handler om type inferens.