Java introducerade en ny klass Optional i jdk8. Det är en offentlig sista klass och används för att hantera NullPointerException i Java-applikationen. Du måste importera java.util-paketet för att använda den här klassen. Den tillhandahåller metoder som används för att kontrollera närvaron av värde för en viss variabel.
Java valfria klassmetoder
Metoder | Beskrivning |
---|---|
public static Valfri empty() | Det returnerar ett tomt Valfritt objekt. Inget värde finns för detta tillval. |
offentlig statisk Valfri (T-värde) | Den returnerar en Optional med det angivna nuvarande icke-nullvärdet. |
offentlig statisk Valfri avNullable(T-värde) | Den returnerar en Optional som beskriver det angivna värdet, om den inte är null, annars returnerar den en tom Optional. |
public T get() | Om ett värde finns i detta Valfria, returnerar värdet, annars kastar NoSuchElementException. |
public boolean isPresent() | Det returnerar sant om det finns ett värde, annars falskt. |
offentligt void ifPresent(Konsumentkonsument) | Om ett värde finns, åberopa den angivna konsumenten med värdet, annars gör ingenting. |
offentligt Valfritt filter (predikatpredikat) | Om ett värde finns och värdet matchar det givna predikatet, returnera en Optional som beskriver värdet, annars returnera en tom Optional. |
offentlig Valfri karta (Funktionsmappare) | Om ett värde finns, använd den medföljande mappningsfunktionen på det, och om resultatet inte är null, returnera ett Valfritt som beskriver resultatet. Annars returnera en tom Valfri. |
offentlig Valfri flatMap(Function super T,Optional mapper) | Om ett värde finns, använd den medföljande Optional-bärande mappningsfunktionen på det, returnera det resultatet, annars returnera en tom Optional. |
offentlig T orElse(T annan) | Det returnerar värdet om det finns, annars returnerar det annat. |
public T orElseGet(Annan leverantör) | Det returnerar värdet om det finns, annars anropar andra och returnerar resultatet av det anropet. |
public T orElseThrow(Supplier exceptionSupplier) kastar X extends Throwable | Den returnerar det inneslutna värdet, om det finns, annars skapas ett undantag som skapas av den tillhandahållna leverantören. |
offentlig boolesk lika med (Objekt obj) | Indikerar om något annat objekt är 'lika med' detta Valfria eller inte. Det andra objektet anses lika om:
|
public int hashCode() | Den returnerar hashkodvärdet för det aktuella värdet, om det finns, eller returnerar 0 (noll) om inget värde finns. |
public String toString() | Den returnerar en icke-tom strängrepresentation av detta tillval som är lämpligt för felsökning. Det exakta presentationsformatet är ospecificerat och kan variera mellan implementeringar och versioner. |
Exempel: Java-program utan att använda tillval
I följande exempel använder vi inte Optional class. Detta program avslutas på ett onormalt sätt och skickar ett nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Produktion:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
För att undvika den onormala uppsägningen använder vi Optional class. I följande exempel använder vi Optional. Så vårt program kan köras utan att krascha.
Java valfritt exempel: Om värde inte finns
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'); } }
Produktion:
string value is not present
Java valfritt exempel: Om värde är närvarande
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'); } }
Produktion:
java optional class example
Ett annat Java valfritt exempel
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()); } }
Produktion:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Java valfria metoder Exempel
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 } }
Produktion:
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