Java представила новий клас Optional у jdk8. Це загальнодоступний кінцевий клас, який використовується для роботи з NullPointerException у програмі Java. Ви повинні імпортувати пакет java.util, щоб використовувати цей клас. Він надає методи, які використовуються для перевірки наявності значення для певної змінної.
Додаткові методи класу Java
методи | опис |
---|---|
public static Необов’язковий порожній() | Він повертає порожній необов’язковий об’єкт. Для цього параметра немає значення. |
public static Необов’язковий для (значення T) | Він повертає необов’язковий параметр із вказаним поточним ненульовим значенням. |
public static Необов'язковий ofNullable (значення T) | Він повертає Optional, що описує вказане значення, якщо воно відмінне від null, інакше повертає порожній Optional. |
публічний T get() | Якщо значення присутнє в цьому Optional, повертає значення, інакше створює NoSuchElementException. |
public boolean isPresent() | Він повертає true, якщо є значення, інакше повертає false. |
public void ifPresent(споживач споживач) | Якщо значення присутнє, викликати вказаного споживача зі значенням, інакше нічого не робити. |
public Необов'язковий фільтр (предикатний предикат) | Якщо значення присутнє та воно відповідає даному предикату, поверніть Optional, що описує значення, інакше поверніть порожній Optional. |
загальнодоступна необов'язкова карта (відповідач функцій) | Якщо значення присутнє, застосуйте до нього надану функцію відображення, а якщо результат відмінний від null, поверніть необов’язковий опис результату. В іншому випадку поверніть порожнє необов’язкове значення. |
public Додатковий flatMap(функція super T,Optional mapper) | Якщо значення присутнє, застосуйте до нього надану функцію зіставлення Optional-bearing, поверніть цей результат, інакше поверніть порожній Optional. |
громадський T orElse(T other) | Він повертає значення, якщо воно є, інакше повертає other. |
public T orElseGet(Supplier other) | Він повертає значення, якщо воно є, інакше викликає other і повертає результат цього виклику. |
public T orElseThrow(Supplier exceptionSupplier) кидає X extends Throwable | Він повертає вмістиме значення, якщо воно є, інакше створює виняток, створений наданим постачальником. |
публічне логічне значення дорівнює (Object obj) | Вказує, чи є якийсь інший об’єкт «рівним» цьому варіанту чи ні. Інший об'єкт вважається рівним, якщо:
|
public int hashCode() | Він повертає значення хеш-коду поточного значення, якщо воно є, або повертає 0 (нуль), якщо значення немає. |
public String toString() | Він повертає непорожнє рядкове представлення цього параметра, придатне для налагодження. Точний формат представлення не визначений і може відрізнятися залежно від реалізації та версії. |
Приклад: програма Java без використання Optional
У наступному прикладі ми не використовуємо клас Optional. Ця програма ненормально завершує роботу та створює виняток nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Вихід:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
Щоб уникнути ненормального завершення, ми використовуємо клас Optional. У наступному прикладі ми використовуємо Optional. Отже, наша програма може працювати без збоїв.
Додатковий приклад Java: якщо значення не присутнє
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'); } }
Вихід:
string value is not present
Додатковий приклад 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]); 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'); } }
Вихід:
java optional class example
Ще один необов’язковий приклад 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()); } }
Вихід:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Приклад додаткових методів 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 } }
Вихід:
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