logo

Classe facoltativa Java

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 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:
  • È anche un facoltativo e;
  • Entrambe le istanze non hanno valore presente o;
  • i valori attuali sono 'uguali' tra loro tramite equals().
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