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에 대응하는 최상위 타입이며,Unit은void와 유사합니다.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를 참고하세요.