Skip to Content
Java에 대한 기능적 접근 방식
book

Java에 대한 기능적 접근 방식

by Ben Weidig
May 2025
Beginner to intermediate
414 pages
5h 58m
Korean
O'Reilly Media, Inc.
Book available
Content preview from Java에 대한 기능적 접근 방식

9장. 옵션으로 null 처리하기

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

NullPointerExceptions많은 사람들이 참조를 null 억만장자 실수라고 합니다. 사실 의 발명가가 원래 이 문구를 만들었습니다: null

저는 이를 10억 달러짜리 실수라고 부릅니다.

1965년에 null 참조가 발명되었습니다. 당시 저는 객체 지향 언어(ALGOL W)에서 참조를 위한 최초의 포괄적인 타입 시스템을 설계하고 있었습니다. 제 목표는 컴파일러가 자동으로 검사를 수행하여 모든 참조 사용이 절대적으로 안전해야 한다는 것이었습니다. 하지만 구현이 너무 쉽다는 이유로 null 참조를 넣고 싶은 유혹을 뿌리칠 수 없었습니다.

이로 인해 지난 40년 동안 수많은 오류, 취약성, 시스템 충돌이 발생하여 수십억 달러의 고통과 피해가 발생했을 것으로 추정됩니다.

찰스 안토니 리처드 호어 경, (QCon 런던 2009)

이 '실수'를 처리하는 방법에 대한 절대적인 합의는 없지만, 많은 프로그래밍 언어에는 null 참조를 처리하는 적절하고 관용적인 방법이 있으며, 종종 언어 자체에 직접 통합되어 있습니다.

이 장에서는 Java가 null 참조를 처리하는 방법과 Optional<T> 유형 및 해당 기능 API를 사용하여 코드에서 이를 개선하는 방법을 보여주고, 옵션의 사용 방법, 시기 및 사용하지 말아야 할 경우에 대해 알아보세요.

널 참조의 문제

Java의 값 부재 처리 방식은 유형에 따라 다릅니다. 모든 프리미티브 유형에는 기본값이 있습니다(예: 숫자 유형의 경우 0, boolean 의 경우 false ). 클래스, 인터페이스 및 배열과 같은 비 프리미티브 유형은 변수가 어떤 객체를 참조하지 않는다는 의미로 할당되지 않은 경우 기본값으로 null 을 사용합니다.

참고

참조 타입의 개념은 C/C++ 포인터와 비슷해 보일 수 있지만 Java 참조는 reference 라는 JVM 내부의 특수한 타입으로, JVM은 타입 안전을 보장하고 메모리 액세스를 보호하기 위해 이를 엄격하게 제어합니다.

null 은 실제 유형과 관계없이 모든 객체 참조에 사용할 수 있는 일반화된 유형이기 때문에 null 참조는 "아무것도 없는" 상태가 아닙니다. null 참조에 액세스하려고 하면 JVM은 NullPointerException 을 던지고, 이를 적절히 처리하지 않으면 현재 스레드가 충돌합니다. 이는 일반적으로 예제 9-1에서 보는 것처럼 런타임에 모든 곳에서 null 검사를 요구하는 방어 프로그래밍 방식으로 완화할 수 있습니다.

예 9-1. 널 가능성이 있는 지뢰밭
record User(long id, String firstname, String lastname) {

  String fullname() {
    return String.format("%s %s", 
                         firstname(),
                         lastname());
  }

  String initials() {
    return ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

자바로 배우는 핵심 자료구조와 알고리즘: 기술 면접에 필요한 실용주의 자료구조와 알고리즘

자바로 배우는 핵심 자료구조와 알고리즘: 기술 면접에 필요한 실용주의 자료구조와 알고리즘

유동환, 앨런 B. 다우니
Java의 반응형 시스템

Java의 반응형 시스템

Clement Escoffier, Ken Finnigan

Publisher Resources

ISBN: 9798341654457Supplemental Content