[내일배움캠프] Java 기초문법 Chapter 3. Optional.

김재진·2025년 12월 11일

내일배움캠프

목록 보기
15/70

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;

    // 생성자

    // 기능
    // ✅ null 이 반환될 수 있음을 명확하게 표시
    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();
        
        // isPresent() 활용시 true 를 반환하고 싶을때 활용
        // Student newStudent = new Student();
        // camp.setStudent(newStudent);

        //  Optional 객체 반환받음
        Optional<Student> studentOptional = camp.getStudent();

        // Optional 객체의 기능 활용
        boolean flag = studentOptional.isPresent(); // false 반환
        if (flag) {
            // 존재할 경우
            Student student = studentOptional.get(); // ✅ 안전하게 Student 객체 가져오기
            String studentName = student.getName();
            System.out.println("studentName = " + studentName);

        } else {
            // null 일 경우
            System.out.println("학생이 없습니다.");
        }
    }
}

2-2. orElseGet() 활용

  • 값이 없을 때만 기본값을 제공하는 로직을 실행하는 메서드
import java.util.Optional;

public class Camp {

    // 속성
    private Student student;

    // 생성자

    // 기능
    // ✅ null 이 반환될 수 있음을 명확하게 표시
    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();

        // ✅ Optional 객체의 기능 활용 (orElseGet 사용)
        Student student = camp.getStudent()
                              .orElseGet(() -> new Student("미등록 학생"));

        System.out.println("studentName = " + student.getName());
    }
}
profile
개발공부 처음해보는 사람

0개의 댓글