Home / Programmazione / Java / Usare la classe Optional in Java
Mattepuffo

Usare la classe Optional in Java

Usare la classe Optional in Java

Stiamo parlando di Java 8, e non delle versioni predenti (ma penso varrà anche per l'imminente Java 9).

La classe Optional è un container di oggetti sia nulli che non-nulli.

Questo perchè ci sono vari metodi che astraggono il classico controllo sul valore nullo; in caso di valore nullo, eseguono comunque l'operazione richiesta.

Facciamo un esempio banale, andando a sommare due interi.

Per dare un valore null, però, dovremmo usare Integer e non int:

import java.util.Optional;

public class TestOptional {

    public static void main(String[] args) {
        Integer int1 = null;
        Integer int2 = 10;
        Optional opt1 = Optional.ofNullable(int1);
        Optional opt2 = Optional.ofNullable(int2);
        System.out.println(sum(opt1, opt2));
    }

    public static Integer sum(Optional int1, Optional int2) {
        System.out.println("Controllo primo parametro: " + int1.isPresent());
        System.out.println("Controllo secondo parametro: " + int2.isPresent());
        Integer value1 = int1.orElse(0);
        Integer value2 = int2.get();
        return value1 + value2;
    }
}

Qui vediamo come nel metodo sum usiamo due metodi differenti:

  • orElse -> ritorna il valore se presente, o il valore passato come parametro in caso contrario
  • get -> ritorna il valore, che però deve essere presente

In questo esempio il risultato sarà 10, come se fosse 10 + 0.

In un esempio "normale" avremmo avuto delle eccezioni da qualche parte.

Ovviamente state attenti al suo uso: un uso sbagliato e senza controlli nei punti critici, potrebbe portare a comportamenti non desiderati!

A parte questo, fate dei testi perchè è molto interessante.

Enjoy!