Java je predstavila novu klasu Optional u jdk8. To je javna završna klasa i koristi se za rješavanje NullPointerException u Java aplikaciji. Morate uvesti paket java.util da biste koristili ovu klasu. Pruža metode koje se koriste za provjeru prisutnosti vrijednosti za određenu varijablu.
Neobavezne metode Java klase
Metode | Opis |
---|---|
public static Izborno prazno() | Vraća prazan objekt Optional. Nema vrijednosti za ovu opciju. |
javni statički Neobavezno od (T vrijednost) | Vraća Optional s navedenom sadašnjom vrijednošću koja nije nula. |
public static Optional ofNullable(T value) | Vraća Optional koji opisuje navedenu vrijednost, ako nije null, inače vraća prazan Optional. |
javni T get() | Ako je vrijednost prisutna u ovoj opciji, vraća vrijednost, u suprotnom izbacuje NoSuchElementException. |
javni booleov isPresent() | Vraća true ako je prisutna vrijednost, inače false. |
public void ifPresent(Potrošač potrošač) | Ako je vrijednost prisutna, pozovite navedenog potrošača s vrijednošću, inače ne učinite ništa. |
javni Neobavezni filtar (predikat predikat) | Ako je vrijednost prisutna, a vrijednost odgovara danom predikatu, vrati Optional koji opisuje vrijednost, inače vrati prazan Optional. |
javna Izborna mapa (Maper funkcije) | Ako je vrijednost prisutna, primijenite danu funkciju mapiranja na nju, a ako rezultat nije null, vratite Optional koji opisuje rezultat. U suprotnom vratite prazno Neobavezno. |
public Izborni flatMap(funkcija super T,Optional mapper) | Ako je vrijednost prisutna, primijenite na nju danu funkciju preslikavanja Optional-bearing, vratite taj rezultat, inače vratite praznu Optional. |
javni T orElse(T other) | Vraća vrijednost ako je prisutna, inače vraća drugu vrijednost. |
javni T iliElseGet(Dobavljač ostalo) | Vraća vrijednost ako je prisutna, inače poziva other i vraća rezultat tog poziva. |
public T orElseThrow(Supplier exceptionSupplier) throws X extends Throwable | Vraća sadržanu vrijednost, ako je prisutna, u suprotnom izbacuje iznimku koju će stvoriti navedeni dobavljač. |
public boolean equals (Object obj) | Označava je li neki drugi objekt 'jednak' ovom Optionalu ili nije. Drugi objekt se smatra jednakim ako:
|
javni int hashCode() | Vraća vrijednost hash koda trenutne vrijednosti, ako postoji, ili vraća 0 (nula) ako vrijednost nije prisutna. |
javni niz u niz () | Vraća neprazan prikaz niza ove opcije pogodan za otklanjanje pogrešaka. Točan format prezentacije nije određen i može se razlikovati od implementacije do verzije. |
Primjer: Java program bez korištenja Optional
U sljedećem primjeru ne koristimo Optional klasu. Ovaj program nenormalno završava i izbacuje nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Izlaz:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
Kako bismo izbjegli abnormalno prekidanje, koristimo Optional klasu. U sljedećem primjeru koristimo Optional. Dakle, naš se program može izvršiti bez rušenja.
Java izborni primjer: ako vrijednost nije prisutna
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'); } }
Izlaz:
string value is not present
Java izborni primjer: ako je vrijednost prisutna
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'); } }
Izlaz:
java optional class example
Još jedan Java izborni primjer
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()); } }
Izlaz:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Primjer neobaveznih metoda u Javi
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 } }
Izlaz:
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