Java와 비교
Kotlin에서 해결된 몇 가지 Java 문제점
Kotlin은 Java가 겪는 일련의 문제점들을 해결합니다:
- 널 참조는 타입 시스템에 의해 제어됩니다.
- 원시 타입이 없습니다
- Kotlin의 배열은 불공변입니다
- Kotlin은 Java의 SAM 변환과 달리 적절한 함수 타입을 가지고 있습니다.
- 와일드카드 없는 사용-지점 가변성
- Kotlin은 체크 예외를 가지고 있지 않습니다.
- 읽기 전용 및 변경 가능한 컬렉션을 위한 별도의 인터페이스
Java에는 있지만 Kotlin에는 없는 것
- 체크 예외
- 클래스가 아닌 원시 타입. 바이트코드는 가능한 경우 원시 타입을 사용하지만, 명시적으로 사용할 수는 없습니다.
- 정적 멤버는 컴패니언 객체, 최상위 함수, 확장 함수, 또는 @JvmStatic으로 대체됩니다.
- 와일드카드 타입은 선언-지점 가변성 및 타입 프로젝션으로 대체됩니다.
- 삼항 연산자 `a ? b : c`는 if 식으로 대체됩니다.
- 레코드
- 패턴 매칭
- 패키지-프라이빗 가시성 한정자
Kotlin에는 있지만 Java에는 없는 것
- 람다 식 + 인라인 함수 = 성능 좋은 사용자 지정 제어 구조
- 확장 함수
- 널 안정성
- 스마트 캐스트 (Java 16: `instanceof`를 위한 패턴 매칭)
- 문자열 템플릿 (Java 21: 문자열 템플릿 (미리보기))
- 프로퍼티
- 주 생성자
- 일급 위임
- 변수 및 프로퍼티 타입에 대한 타입 추론 (Java 10: 지역 변수 타입 추론)
- 싱글턴
- 선언-지점 가변성 & 타입 프로젝션
- 범위 식
- 연산자 오버로딩
- 컴패니언 객체
- 데이터 클래스
- 코루틴
- 최상위 함수
- 기본 인자
- 이름 붙은 파라미터
- 중위 함수
- expect 및 actual 선언
- 명시적 API 모드 및 API 표면 제어 기능 개선
다음 단계는?
방법 알아보기:
- Java 및 Kotlin에서 문자열로 일반적인 작업 수행하기.
- Java 및 Kotlin에서 컬렉션으로 일반적인 작업 수행하기.
- Java 및 Kotlin에서 널 허용성 처리하기.