logo

Java 선택적 클래스

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(함수 값이 있으면 제공된 Optional-bearing 매핑 함수를 여기에 적용하고 해당 결과를 반환하고, 그렇지 않으면 빈 Optional을 반환합니다.
공개 T orElse(T 기타) 존재하는 경우 값을 반환하고, 그렇지 않으면 다른 값을 반환합니다.
공개 T orElseGet(공급자 기타) 존재하는 경우 값을 반환하고, 그렇지 않으면 other를 호출하고 해당 호출의 결과를 반환합니다.
공개 T orElseThrow(공급자 예외 공급업체)는 X 확장 Throwable을 발생시킵니다. 포함된 값이 있으면 반환하고, 그렇지 않으면 제공된 공급자가 생성할 예외를 발생시킵니다.
공개 부울은 같음(객체 obj) 다른 개체가 이 Optional과 '동일'한지 여부를 나타냅니다. 다음과 같은 경우 다른 개체는 동일한 것으로 간주됩니다.
  • 또한 선택사항이기도 합니다.
  • 두 인스턴스 모두 값이 없거나;
  • 현재 값은 equals()를 통해 서로 '동일'합니다.
공개 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