Java 16

25 mars 2021

Tags
java

Java version 16

Sedan några år tillbaka, kommer det två utgåvor av språket Java per år. Om allt går som planerat, så släpps version 16 under nästa vecka (16/3).

Tanken med frekventa utgåvor är att stegvis introducera nya språk-konstruktioner. Vanligtvis förs en ny konstruktion i språket som experimentell, vilket innebär att man som utvecklare explicit behöver aktivera detta. Under en eller flera utgåvor, så kommer det in synpunkter och det rullas ut förbättringar. När man nått konsensus, blir konstruktionen en del av språket.

Nytt för denna version är Records respektive förenklad syntax för instanceof operatorn (Pattern Matching for instanceof) . Både tilläggen handlar om att förenkla (korta ned) mängden program kod.

En record är tänkt att användas som en data-överförings klass (Value Object), eftersom den är icke modifierbar ( immutable). Så här kan ett litet exempel se ut:

record Person(String name, int age) {}
var p = new Person("Nisse", 42);

Önskar man validera argumenten, kan man lägga till en sk kompakt konstruktor.

Person {
    if (age < 0)
    throw new Invalid();
}

Ett språktillägg som är på gång (fortfarande experimentell) är Sealed Classes. En uppsättning förseglade klasser definierar en sluten mängd av subklasser. Det här är användbart när man vill definiera en domäntyp med ett fixt antal variationer, utan att förlita sig på trick som package-private konstruktorer.