Het verschil tussen var in Kotlin en Java 10
1. Inleiding
In deze korte tutorial bespreken we de verschillen tussen var trefwoorden in Java en Kotlin.
We dekken de identifier var in Java dieper in ons artikel Java 10 LocalVariable Type-Inference, en we praten over het trefwoord var in Kotlin in ons artikel Kotlin const, var en val Trefwoorden.
2. Optionele typeaangifte versus geen typeaangifte
2.1. Kotlin
Als we een veranderlijke variabele declareren en deze tegelijkertijd initialiseren, hoeven we het type niet op te geven:
var myVariable = 1
We kunnen dit echter doen als we ervoor kiezen om:
var myVariable: Int = 1
Als we een variabele willen declareren zonder deze direct te initialiseren, moeten we het type specificeren, en we kunnen later een waarde toekennen:
var myVariable: Int myVariable = 1
2.2. Java
In Java kunnen we alleen gebruiken var als we de variabele ter plekke initialiseren, en we kunnen geen type-informatie verstrekken, zelfs niet als we:
var myVariable = 1;
Het volgende is ongeldig:
var myVariable; myVariable = 1;
En we krijgen een compilatietijdfout:
Kan type niet afleiden: 'var' op variabele zonder initialisatieprogramma
3. Trefwoord versus identificatie
In Kotlin, var is een trefwoord, wat betekent dat we het niet kunnen gebruiken als de naam van een variabele, parameter, methode of klasse. Daarentegen definieert Java 10 var als identificatie met een speciale betekenis.
Dat betekent dat we in Java 10 nog steeds een variabele, parameter of methode kunnen definiëren met de naam var:
public void var () {// doe iets} public void method (int var) {// doe iets} public void method () {int var = 1; // doe iets }
Houd er rekening mee dat het vanaf Java 10 niet meer mogelijk is om een klasse met de naam te definiëren var:
openbare statische klasse var {}
De bovenstaande code resulteert in een compilatietijdfout:
Fout: (1, 1) java: 'var' hier niet toegestaan vanaf release 10, 'var' is een beperkte typenaam en kan niet worden gebruikt voor typeaangiftes
Dit zorgt voor achterwaartse compatibiliteit met oudere Java-versies.
4. Veranderlijkheid
Een variabele gedeclareerd met var in Kotlin is altijd veranderlijk, terwijl een variabele wordt gedeclareerd met var in Java kan veranderlijk of definitief zijn:
var mutableInt = 1; final var immutableInt = 1;
In Kotlin is er geen laatste trefwoord - definitieve variabelen worden gedeclareerd met val in plaats daarvan:
val immutableInt = 1
5. Wereldwijd versus lokaal gebruik
5.1. Kotlin
In Kotlin kunnen we gebruiken var om globale en lokale variabelen te declareren, evenals klasleden:
var myGlobalVar = 3 class MyClass {var myVar = 3 openbare fun myFunction (): Int {var myVariable = 3 return myVariable}}
5.2. Java
In Java kunnen we var alleen om lokale variabelen te declareren:
public class MyClass {// niet mogelijk voor lidvariabelen // private var myVar = 1; openbare int myFunction () {var myVariable = 3; retourneer myVariable; }}
6. Conclusie
In dit artikel hebben we gekeken naar het verschil tussen var in Kotlin en Java. Hoewel beide erg op elkaar lijken, zijn er fundamentele verschillen tussen de twee.
Het belangrijkste verschil is dat var in Kotlin gaat over veranderlijkheid, en var in Java gaat over type-inferentie.