Var with style

Devoxx 2018 (auteur: Ebert Zeilstra)

inSystems Java

Eerder dit jaar is er met de release van Java 10 een nieuwe manier toegevoegd om variabelen te declareren, genaamd Var with style: local variable type inference in Java. Stuart Marks van Oracle is hier tijdens Devoxx 2018 dieper op ingegaan tijdens zijn sessie Var with style.

Stuart Marks

Zoals al gebruikelijk was in JavaScript is het nu ook in Java mogelijk om de compiler te laten bepalen welk type een variabele moet krijgen. In tegenstelling tot JavaScript, welke een dynamische type declaratie kent, is en blijft Java gecommitteerd aan statische type declaratie. De compiler bepaalt tijdens het compileren welk statisch type de variabele moet krijgen.

Laten we even naar aan voorbeeld kijken. In plaats van:

Customer customer = new Customer();

kan de variabele met Java 10 als volgt gedeclareerd worden:

var customer = new Customer();

Hiermee is de compiler prima in staat om te bepalen dat de variabele customer van het type Customer moet zijn.

Alleen voor lokale variabelen

Waar kunnen we het type var gebruiken en waar vooral niet? Daar kunnen we kort over zijn, het type var kan alleen worden gebruikt als lokale variabele, verder niet. De reden daarvoor is dat als je per ongeluk een field, methode parameter of return type verandert, je een probleem kan krijgen in een API zonder dat je dat door hebt. Het kan dus zo zijn dat ineens een deel van de code niet meer compileert of erger nog een runtime error geeft tijdens het runnen van je code als gevolg van die wijziging. Om dat te voorkomen is ervoor gekozen om alleen lokale variabelen te kunnen declareren met het type var.

Voorbeelden

Nog even een paar voorbeelden van wat de compiler wel en niet snapt.

var customer = new Customer(); // Customer
var name = ”Ebert”; // String
var numbers = List.of(1, 2, 3); // List<Integer>

var customer; // ERROR
var customer = null; // ERROR
var func = (int a, int b) -> a + b; // ERROR

De eerste foutieve declaratie komt omdat er geen type definitie kan worden vastgesteld. Dat geldt ook voor de tweede foutieve declaratie, omdat null de compiler geen duidelijkheid verschaft om een type te bepalen. Het laatste voorbeeld is een lambda. Aangezien het type van een lambda bepaald wordt door zijn omgeving, is het niet duidelijk genoeg voor de compiler om het type te bepalen en dat werkt dus ook niet.

Bijkomende voordelen van het type var zijn dat het typewerk scheelt, wat ook de leesbaarheid van de code ten goede komt.

Het type var is een mooie toevoeging aan Java. Ik hoor rond me heen de voor- en tegenstanders al flink met elkaar in discussie gaan over het wel of niet gebruiken van het type var. Stof genoeg tot discussie. Wat je ook doet, sta er in ieder geval samen achter.

Share this

Contact

Heb je vragen of opmerkingen? Aarzel niet om contact op te nemen. Dat kan via de algemene contactgegevens, rechtstreeks met de genoemde contactpersoon op een van de detailpagina’s, of via onderstaande knop.

29 juni 2026

Welke midlance regeling past bij mij?

Medium-lance / Midlance wint snel aan populariteit. Het combineert de zekerheid van een vast dienstverband met de mogelijkheid om een aanzienlijk hoger inkomen te verdienen wanneer je op mooie opdrachten wordt ingezet.

18 juni 2026

AI inspiratiesessie

AI is nauwelijks nog weg te denken uit het nieuws. Vrijwel dagelijks verschijnen er berichten over nieuwe AI-toepassingen. Dat roept vragen op. Wat is AI eigenlijk precies? Wat kunnen deze systemen wel en niet? Wat betekent dit voor mij?

Opdrachten uitgevoerd voor

Ziggo
Arval BNP Paribas
Twinq
Eneco
Holland Casino
Ahold
IBM
RAVU
Bank Mendes Gans
DICTU
Allianz
TenneT
Stratech Social
inSystems Unive
CB Logistics
Belastingdienst
Fokker
RIGD LOXIA
Syntrus Achmea Real Estate & Finance
Gemeente Gouda
Politie
Van Iperen Groeispecialisten
MN Services
Thales
Alliance Healthcare
Leaseplan
Nederlandse Spoorwegen
Rendo
Darling
Alphabet
Multi Tank Card
Rabobank
Stedin
ING Bank
Feenstra inSystems
Ministerie van Economische Zaken, Landbouw & Innovatie
ASR Nederland
VAA ICT Consultancy
UBR Uitvoeringsorganisatie Bedrijfsvoering Rijk
CBR
inSystems KLM
Altran
SVB
Telegraaf Media Groep
Universiteit Tilburg
Gemeente Apeldoorn
Cannock
Provincie Utrecht
TU Eindhoven
NVWA inSystems
PC Uitvaart
AgroEnergy
Gemeente Den Haag
Oracle University
VTTI
BMW
Rijk Zwaan inSystems
WVDB Adviseurs Accountants
GVB
Rechtspraak
VION Food Group
JUVA
Greenchoice