Java je v jdk8 predstavila nov razred Optional. Je javni končni razred in se uporablja za obravnavo NullPointerException v aplikaciji Java. Za uporabo tega razreda morate uvoziti paket java.util. Ponuja metode, ki se uporabljajo za preverjanje prisotnosti vrednosti za določeno spremenljivko.
Izbirne metode razreda Java
Metode | Opis |
---|---|
javni statični Izbirno prazno() | Vrne prazen izbirni objekt. Za to možnost ni nobene vrednosti. |
javni statični Izbirno od (vrednost T) | Vrne izbirno vrednost s podano trenutno neničelno vrednostjo. |
javni statični Izbirno ofNullable (vrednost T) | Vrne Optional, ki opisuje podano vrednost, če ni ničelna, sicer vrne prazno Optional. |
javni T get() | Če je vrednost prisotna v tej možnosti, vrne vrednost, sicer vrže NoSuchElementException. |
javni logični isPresent() | Vrne true, če je prisotna vrednost, sicer pa false. |
public void ifPresent(potrošnik potrošnik) | Če je vrednost prisotna, prikličite navedeni porabnik z vrednostjo, sicer ne storite ničesar. |
javni Izbirni filter (predikat predikat) | Če je vrednost prisotna in se vrednost ujema z danim predikatom, vrnite izbirno vrednost, ki opisuje vrednost, sicer vrnite prazno izbirno. |
javni izbirni zemljevid (preslikava funkcij) | Če je vrednost prisotna, zanjo uporabite ponujeno funkcijo preslikave in če rezultat ni ničelni, vrnite Izbirno, ki opisuje rezultat. V nasprotnem primeru vrnite prazno Izbirno. |
public Izbirni flatMap(funkcija super T,Optional mapper) | Če je vrednost prisotna, zanjo uporabite ponujeno funkcijo preslikave izbirnega ležaja, vrnite ta rezultat, sicer vrnite prazno izbirno. |
javni T orElse(T other) | Vrne vrednost, če je prisotna, sicer vrne drugo. |
public T orElseGet(Dobavitelj drugo) | Vrne vrednost, če je prisotna, sicer pokliče other in vrne rezultat tega klicanja. |
public T orElseThrow(Dobavitelj izjemaDobavitelj) vrže X razširi Throwable | Vrne vsebovano vrednost, če je prisotna, sicer vrže izjemo, ki jo ustvari navedeni dobavitelj. |
javno logično je enako (objekt obj) | Označuje, ali je nek drug objekt 'enakovreden' tej izbirni ali ne. Drugi predmet se šteje za enak, če:
|
public int hashCode() | Vrne vrednost zgoščene kode trenutne vrednosti, če obstaja, ali vrne 0 (nič), če vrednost ni prisotna. |
public String toString() | Vrne neprazno predstavitev niza te izbire, ki je primerna za odpravljanje napak. Natančen format predstavitve ni določen in se lahko razlikuje med implementacijami in različicami. |
Primer: Program Java brez uporabe Optional
V naslednjem primeru ne uporabljamo izbirnega razreda. Ta program se nenormalno zaključi in vrže izjemo nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Izhod:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
Da bi se izognili nenormalni prekinitvi, uporabljamo izbirni razred. V naslednjem primeru uporabljamo Optional. Torej se naš program lahko izvaja brez zrušitve.
Izbirni primer Java: če vrednost ni prisotna
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'); } }
Izhod:
string value is not present
Izbirni primer Java: Če je vrednost prisotna
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'); } }
Izhod:
java optional class example
Še en izbirni primer 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()); } }
Izhod:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Primer neobveznih metod 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 } }
Izhod:
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