Java는 jdk8에 새로운 클래스 Optional을 도입했습니다. 이는 공개 최종 클래스이며 Java 애플리케이션에서 NullPointerException을 처리하는 데 사용됩니다. 이 클래스를 사용하려면 java.util 패키지를 가져와야 합니다. 특정 변수에 대한 값의 존재를 확인하는 데 사용되는 방법을 제공합니다.
Java 선택적 클래스 메소드
행동 양식 | 설명 |
---|---|
공개 정적 선택적 비어 있음() | 빈 Optional 객체를 반환합니다. 이 옵션에는 값이 없습니다. |
public static Optional of(T 값) | 지정된 현재 null이 아닌 값을 사용하여 Optional을 반환합니다. |
public static Optional ofNullable(T 값) | null이 아닌 경우 지정된 값을 설명하는 Optional을 반환하고, 그렇지 않으면 빈 Optional을 반환합니다. |
공개 T get() | 이 Optional에 값이 있으면 해당 값을 반환하고, 그렇지 않으면 NoSuchElementException을 발생시킵니다. |
공개 부울 isPresent() | 값이 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
public void ifPresent(소비자 소비자) | 값이 있으면 해당 값으로 지정된 소비자를 호출하고, 그렇지 않으면 아무 작업도 수행하지 않습니다. |
public 선택적 필터(Predicate predicate) | 값이 존재하고 값이 주어진 조건자와 일치하면 값을 설명하는 Optional을 반환하고, 그렇지 않으면 빈 Optional을 반환합니다. |
public Optional map(함수 매퍼) | 값이 있으면 제공된 매핑 함수를 여기에 적용하고, 결과가 null이 아니면 결과를 설명하는 Optional을 반환합니다. 그렇지 않으면 빈 Optional을 반환합니다. |
공개 선택사항 flatMap(함수 super T,Optional mapper) | 값이 있으면 제공된 Optional-bearing 매핑 함수를 여기에 적용하고 해당 결과를 반환하고, 그렇지 않으면 빈 Optional을 반환합니다. |
공개 T orElse(T 기타) | 존재하는 경우 값을 반환하고, 그렇지 않으면 다른 값을 반환합니다. |
공개 T orElseGet(공급자 기타) | 존재하는 경우 값을 반환하고, 그렇지 않으면 other를 호출하고 해당 호출의 결과를 반환합니다. |
공개 T orElseThrow(공급자 예외 공급업체)는 X 확장 Throwable을 발생시킵니다. | 포함된 값이 있으면 반환하고, 그렇지 않으면 제공된 공급자가 생성할 예외를 발생시킵니다. |
공개 부울은 같음(객체 obj) | 다른 개체가 이 Optional과 '동일'한지 여부를 나타냅니다. 다음과 같은 경우 다른 개체는 동일한 것으로 간주됩니다.
|
공개 int hashCode() | 현재 값의 해시 코드 값이 있으면 반환하고, 값이 없으면 0을 반환합니다. |
공개 문자열 toString() | 디버깅에 적합한 이 Optional의 비어 있지 않은 문자열 표현을 반환합니다. 정확한 프리젠테이션 형식은 지정되지 않았으며 구현과 버전에 따라 다를 수 있습니다. |
예: Optional을 사용하지 않는 Java 프로그램
다음 예에서는 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