콘텐츠로 이동

Kotlin In Action: 코틀린 핵심 개념 요약

🚀 개요

본 문서는 Kotlin In Action 도서를 학습하며 정리한 코틀린의 핵심 개념 요약 가이드입니다. 자바와의 상호운용성을 유지하면서도 더 안전하고 간결한 코드를 작성하기 위한 코틀린만의 철학과 주요 기능들을 다룹니다.


💡 1. 코틀린 타입 시스템 (Type System)

코틀린의 타입 시스템은 Null Safety실용성에 초점을 맞추고 있습니다.

널 가능성 (Nullability)

  • Safe Call (?.): 객체가 null이 아닐 때만 메서드를 호출합니다.
  • Elvis Operator (?:): 객체가 null일 경우 기본값을 지정합니다.
  • Safe Cast (as?): 캐스팅 실패 시 ClassCastException 대신 null을 반환합니다.
  • 플랫폼 타입: 자바에서 넘어온 타입은 @Nullable이나 @NotNull 어노테이션이 없는 경우 플랫폼 타입으로 취급되어 개발자가 주의해서 다뤄야 합니다.

원시 타입 (Primitive Types)

  • 코틀린에서는 원시 타입과 래퍼 타입을 구분하지 않고 Int, Boolean 등을 사용하며, 컴파일러가 상황에 맞게 최적화된 바이트코드로 변환합니다.
  • Any는 자바의 Object에 대응하는 최상위 타입이며, Unitvoid와 유사합니다. Nothing은 함수가 정상적으로 종료되지 않음을 의미합니다.

람다와 컬렉션 (Lambdas & Collections)

함수형 프로그래밍 스타일을 활용하여 컬렉션을 효율적으로 다룹니다.

람다 식의 문법

  • 함수 인자 중 마지막이 람다라면 괄호 밖으로 뺄 수 있습니다.
  • 인자가 하나뿐인 람다는 it이라는 예약어를 사용할 수 있습니다.
  • 멤버 참조 (::): 프로퍼티나 메서드를 직접 참조하여 인자로 넘길 수 있습니다.

컬렉션 연산

  • filter, map, all, any, find, groupBy 등을 활용하여 루프 없이 데이터를 가공합니다.
  • 시퀀스 (Sequence): 대량의 데이터를 다룰 때 중간 컬렉션을 생성하지 않고 지연(Lazy) 연산을 수행하여 성능을 최적화합니다.

🛠️ 3. 고차 함수와 인라인 함수 (High-Order Functions)

고차 함수 (High-Order Function)

  • 함수를 인자로 받거나 함수를 반환하는 함수입니다.
  • 함수 타입을 통해 변수에 함수를 담거나 파라미터로 전달할 수 있습니다.

인라인 함수 (Inline Function)

  • inline 키워드를 사용하면 람다를 호출하는 지점에 람다 본문이 직접 삽입되어, 익명 클래스 생성에 따른 오버헤드를 줄입니다.
  • Non-local return: 인라인 함수 내부의 람다에서는 바깥쪽 함수를 반환시키는 return 문을 사용할 수 있습니다.

🏗️ 4. 객체지향 프로그래밍 (OOP)

  • Property: 필드와 접근자(Getter/Setter)를 하나로 묶어 선언합니다.
  • Data Class: equals, hashCode, toString 등을 자동으로 생성하여 데이터 보관에 특화된 클래스를 제공합니다.
  • Sealed Class: 클래스 계층 구조를 제한하여 when 식에서 모든 경우를 처리했는지 컴파일러가 체크할 수 있게 합니다.

📝 결론 및 학습 성과

  • 생산성 향상: 자바보다 훨씬 적은 코드로 동일한 기능을 구현할 수 있음을 확인했습니다.
  • 안전성: 컴파일 시점에 널 포인터 예외를 원천 차단하는 설계 방식의 위력을 실감했습니다.
  • 확장성: 확장 함수나 수신 객체 지정 람다를 통해 기존 라이브러리를 수정하지 않고도 기능을 확장할 수 있는 유연함을 배웠습니다.

학습 상세 내용은 src/main/kotlin 하위의 각 챕터별 예제 코드와 summary.md를 참고하세요.