1. Optional 이란
- Optional 객체는 null(값이 없음, 참조하지 않음) 을 안전하게 다루게 해주는 객체
- null을 직접 다루는 대신 Optional을 사용하여 NullPionterException을 방지할 수 있다.
2. Optional 활용
- if문을 활용하여 null처리를 할 수 있지만 모든 가능성을 예측하고 처리하기가 어려움
- Optional 객체를 메서드 반환 자료형에 선언해서 해당 메서드가 null이 반환될 가능성을 전달 할 수 있음.
- isPresent(), orElseGet()을 활용하여 안전하게 null처리 가능
2-1. isPresent() 활용
- Optional 내부의 값이 존재할 경우 true 반환
- 내부 값이 null일 경우 false 반환
import java.util.Optional;
public class Camp {
private Student student;
public Optional<Student> getStudent() {
return Optional.ofNullable(student);
}
public void setStudent(Student student) {
this.student = student;
}
}
public class Main {
public static void main(String[] args) {
Camp camp = new Camp();
Optional<Student> studentOptional = camp.getStudent();
boolean flag = studentOptional.isPresent();
if (flag) {
Student student = studentOptional.get();
String studentName = student.getName();
System.out.println("studentName = " + studentName);
} else {
System.out.println("학생이 없습니다.");
}
}
}
2-2. orElseGet() 활용
- 값이 없을 때만 기본값을 제공하는 로직을 실행하는 메서드
import java.util.Optional;
public class Camp {
private Student student;
public Optional<Student> getStudent() {
return Optional.ofNullable(student);
}
}
import java.util.Optional;
public class Main {
public static void main(String[] args) {
Camp camp = new Camp();
Student student = camp.getStudent()
.orElseGet(() -> new Student("미등록 학생"));
System.out.println("studentName = " + student.getName());
}
}