Java ha introdotto una nuova classe Opzionale in jdk8. È una classe finale pubblica e utilizzata per gestire NullPointerException nell'applicazione Java. È necessario importare il pacchetto java.util per utilizzare questa classe. Fornisce metodi utilizzati per verificare la presenza di valore per una particolare variabile.
Metodi di classe opzionali Java
Metodi | Descrizione |
---|---|
pubblico statico Opzionale vuoto() | Restituisce un oggetto opzionale vuoto. Nessun valore è presente per questo Opzionale. |
public static Opzionale di(valore T) | Restituisce un Opzionale con il valore presente non nullo specificato. |
public static Opzionale ofNullable(valore T) | Restituisce un optional che descrive il valore specificato, se diverso da null, altrimenti restituisce un optional vuoto. |
pubblico T get() | Se un valore è presente in questo Opzionale, restituisce il valore, altrimenti genera NoSuchElementException. |
booleano pubblico isPresent() | Restituisce vero se è presente un valore, altrimenti falso. |
public void ifPresent(Consumatore consumatore) | Se è presente un valore, richiama il consumatore specificato con il valore, altrimenti non fare nulla. |
public Filtro opzionale (predicato predicato) | Se un valore è presente e corrisponde al predicato specificato, restituisce un Opzionale che descrive il valore, altrimenti restituisce un Opzionale vuoto. |
mappa opzionale pubblica (mappatore di funzioni) | Se un valore è presente, applica ad esso la funzione di mappatura fornita e, se il risultato è diverso da null, restituisce un Opzionale che descrive il risultato. Altrimenti restituisce un Opzionale vuoto. |
public Opzionale flatMap(Function super T,Optional mapper) | Se un valore è presente, applica ad esso la funzione di mappatura del cuscinetto opzionale fornita, restituisce il risultato, altrimenti restituisce un opzionale vuoto. |
pubblico T orElse(T altro) | Restituisce il valore se presente, altrimenti restituisce altro. |
public T orElseGet(Altro fornitore) | Restituisce il valore se presente, altrimenti invoca other e restituisce il risultato di tale invocazione. |
public T orElseThrow(Eccezione fornitoreSupplier) genera X estende Throwable | Restituisce il valore contenuto, se presente, altrimenti lancia un'eccezione che deve essere creata dal fornitore fornito. |
booleano pubblico è uguale a (Oggetto oggetto) | Indica se qualche altro oggetto è 'uguale a' questo Opzionale oppure no. L'altro oggetto è considerato uguale se:
|
public int hashCode() | Restituisce il valore del codice hash del valore presente, se presente, oppure restituisce 0 (zero) se non è presente alcun valore. |
Stringa pubblica toString() | Restituisce una rappresentazione di stringa non vuota di questo Opzionale adatta per il debug. L'esatto formato di presentazione non è specificato e può variare a seconda delle implementazioni e delle versioni. |
Esempio: programma Java senza utilizzare Opzionale
Nell'esempio seguente non stiamo utilizzando la classe Opzionale. Questo programma termina in modo anomalo e genera un'eccezione nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Produzione:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
Per evitare la terminazione anomala, utilizziamo la classe Opzionale. Nell'esempio seguente utilizziamo Opzionale. Quindi, il nostro programma può essere eseguito senza bloccarsi.
Esempio facoltativo Java: se il valore non è presente
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // check for value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('string value is not present'); } }
Produzione:
string value is not present
Esempio facoltativo Java: se il valore è presente
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE';// Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // It Checks, value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('String value is not present'); } }
Produzione:
java optional class example
Un altro esempio facoltativo Java
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); checkNull.ifPresent(System.out::println); // printing value by using method reference System.out.println(checkNull.get()); // printing value by using get method System.out.println(str[5].toLowerCase()); } }
Produzione:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Esempio di metodi opzionali Java
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index // It returns an empty instance of Optional class Optional empty = Optional.empty(); System.out.println(empty); // It returns a non-empty Optional Optional value = Optional.of(str[5]); // If value is present, it returns an Optional otherwise returns an empty Optional System.out.println('Filtered value: '+value.filter((s)->s.equals('Abc'))); System.out.println('Filtered value: '+value.filter((s)->s.equals('JAVA OPTIONAL CLASS EXAMPLE'))); // It returns value of an Optional. if value is not present, it throws an NoSuchElementException System.out.println('Getting value: '+value.get()); // It returns hashCode of the value System.out.println('Getting hashCode: '+value.hashCode()); // It returns true if value is present, otherwise false System.out.println('Is value present: '+value.isPresent()); // It returns non-empty Optional if value is present, otherwise returns an empty Optional System.out.println('Nullable Optional: '+Optional.ofNullable(str[5])); // It returns value if available, otherwise returns specified value, System.out.println('orElse: '+value.orElse('Value is not present')); System.out.println('orElse: '+empty.orElse('Value is not present')); value.ifPresent(System.out::println); // printing value by using method reference } }
Produzione:
Optional.empty Filtered value: Optional.empty Filtered value: Optional[JAVA OPTIONAL CLASS EXAMPLE] Getting value: JAVA OPTIONAL CLASS EXAMPLE Getting hashCode: -619947648 Is value present: true Nullable Optional: Optional[JAVA OPTIONAL CLASS EXAMPLE] orElse: JAVA OPTIONAL CLASS EXAMPLE orElse: Value is not present JAVA OPTIONAL CLASS EXAMPLE