Primitívne typy v priraďovaní vzorov v Jave

15. 7. 2024

Sdílet

Java káva na dřevu Autor: Depositphotos

V Jave 23 pribudla možnosť používania primitívnych typov pre syntax priraďovania vzorov (pattern matching). Novinku formálne špecifikuje dokument Primitive Types in Patterns, instanceof, and switch.

Java rozlišuje dátové typy na dve základné skupiny: primitívne a referenčné. Táto schizma však priniesla časom veľa komplikácií. Nie je možné tak ľahko použiť primitívne typy (napr. int, double, alebo boolean) tam, kde sa použijú referenčné typy (napr. String, alebo Integer.) Tieto rozdiely má v budúcnosti odstrániť projekt Valhalla, na ktorom sa dlhodobo pracuje.

To je aj dôvod, prečo bol pattern matching najprv implementovaný len pre referenčné typy. Podpora pre primitívne typy sa len postupne dopracuváva.

import java.util.Random;

void main() {

    boolean isGirl = new Random().nextBoolean();

    String name = pickName(isGirl);
    System.out.printf("chosen name: %s %n", name);
}

String pickName(boolean isGirl) {

    return switch (isGirl) {
        case true -> "Zuzana";
        case false -> "Martin";
    };
}

V tomto príklade použijeme hodnoty primitívneho typu  boolean.

import java.util.Arrays;

void main() {

    int[] ages = { 12, 23, 45, 0, 67, 88, 43, 55, -4};

    Arrays.stream(ages).forEach(e -> System.out.println(e + ": " + checkAge(e)));
}

String checkAge(int age) {

    return switch (age) {
        case int i when i < 18 && i > 0-> "minor";
        case int i when i >= 18 && i < 64 -> "adult";
        case int i when i > 64 -> "senior";
        default -> "n/a";
    };
}

Tento príklad používa primitívny typ int.

Príklady si môžete spustiť príkazom java --enable-preview --source 23 Main.java.

Táto novinka je zatiaľ v preview verzii v Jave 23.

Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!

Našli jste v článku chybu?

Autor zprávičky