Beperkingen van var
Waar var niet kan worden gebruikt
Beperkingen van var is een gratis Java Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 4 lessen.
var heeft regels
var is handig, maar beperkt. Het werkt alleen voor lokale variabelen met een initialisatie-expressie. Als je weet waar je het niet kunt gebruiken, voorkom je frustrerende compilatiefouten.
Alleen voor lokale variabelen
var is alleen toegestaan voor lokale variabelen, dus binnen methoden, lussen enzovoort. Het voorbeeld hieronder is geldig omdat de variabele lokaal is.
public class Main {
public static void main(String[] args) {
var greeting = "OK for locals";
System.out.println(greeting);
}
}Niet voor velden
Je kunt var niet gebruiken voor velden van een klasse. Velden moeten een expliciet type vermelden. Hier is count een normaal veld.
public class Main {
static int count = 0;
public static void main(String[] args) {
count = 5;
System.out.println(count);
}
}Niet voor methodeparameters
Methodeparameters hebben expliciete typen nodig. var is niet toegestaan in een parameterlijst, dus deze methode vermeldt rechtstreeks String name.
public class Main {
static void greet(String name) {
System.out.println("Hi " + name);
}
public static void main(String[] args) {
greet("Lee");
}
}Niet voor retourtypen
Het retourtype van een methode kan niet var zijn; het moet expliciet worden vermeld. De compiler leidt retourtypen niet af.
public class Main {
static int square(int x) {
return x * x;
}
public static void main(String[] args) {
System.out.println(square(6));
}
}Een initialisatie-expressie is verplicht
Je kunt niet var x; schrijven zonder waarde. Zonder initialisatie-expressie heeft de compiler niets om van af te leiden. Wijs altijd meteen een waarde toe.
public class Main {
public static void main(String[] args) {
var ready = true;
System.out.println(ready);
}
}Geen null als initialisatie-expressie
var x = null; werkt niet, omdat null geen specifiek type heeft. Geef in plaats daarvan een waarde met een type op, zoals een lege tekenreeks.
public class Main {
public static void main(String[] args) {
var text = "";
text = "now has a value";
System.out.println(text);
}
}Geen verkorte array-initialisatie
Je kunt niet var nums = {1, 2, 3}; schrijven. De verkorte notatie met accolades vereist een gedeclareerd arraytype. Gebruik in plaats daarvan new int[]{...}.
public class Main {
public static void main(String[] args) {
var nums = new int[]{1, 2, 3};
System.out.println(nums.length);
}
}Geen gereserveerd sleutelwoord
Interessant genoeg is var een gereserveerde typenaam en geen sleutelwoord. Je kunt een klasse nog steeds niet var noemen, maar de regel is beperkt. Behandel het in de praktijk als moderne syntaxis.
public class Main {
public static void main(String[] args) {
var var2 = "identifiers can contain var";
System.out.println(var2);
}
}Geen lambda zonder doeltype
Je kunt geen losse lambda-expressie aan var toewijzen, omdat een lambda-expressie een doeltype van een functionele interface nodig heeft om van af te leiden. Declareer het interfacetype expliciet.
import java.util.function.IntUnaryOperator;
public class Main {
public static void main(String[] args) {
IntUnaryOperator doubler = x -> x * 2;
System.out.println(doubler.applyAsInt(21));
}
}Samenvatting van de beperkingen
Onthoud de grenzen: alleen lokale variabelen, initialisatie verplicht, geen null, geen losse lambda-expressie, geen verkorte arraynotatie met accolades en niet voor velden, parameters of retourtypen.
public class Main {
public static void main(String[] args) {
var ok = 42;
System.out.println("var is for locals: " + ok);
}
}Korte controle
Welke van de volgende opties is een geldig gebruik van var?
Samenvatting
Je hebt de beperkingen van var geleerd:
- Alleen toegestaan voor lokale variabelen met een initialisatie-expressie
- Niet voor velden, parameters of retourtypen
- Kan niets afleiden uit
nullof een losse lambda-expressie - Geen verkorte arraynotatie met accolades
- Het is een gereserveerde typenaam, geen sleutelwoord
Leer Java met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 104
- Lessen
- 374
Veelgestelde vragen
Is de les “Beperkingen van var” gratis?
Ja — de volledige tekst van “Beperkingen van var” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 4 lessen.
Wat leer ik in “Beperkingen van var”?
Waar var niet kan worden gebruikt Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Java Academy te beginnen?
Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Beperkingen van var”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Java Academy?
Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- var voor lokale variabelen gebruiken
- Wanneer var de leesbaarheid verbetert
- var in for-lussen
- Beperkingen van var