자바와 코틀린 차이점
코틀린 : Null에 안전
함수형 프로그래밍이란
- 함수도 객체로 취급
- 코드 간략, 재사용성 증가
- 람다식, 고차함수, 순수함수
- 모듈화 하므로 디버깅, 테스트 용이
- 생산성 높다
코틀린 장점
- 문법이 간결하다
- 컴파일 타임에 Null을 체크하므로 Null 안전하다
- JVM을 기반으로 하므로 자바에서 제공하는 Collection을 그대로 사용할수있음
sealed class VS data class
sealed class
- 하위 클래스의 종류를 제한
- 객체 생성 불가능
- 하위 클래스는 class, data class, object 가능
- when절에서 else문 필요없음
- sealed의 하위 클래스들은 객체 여러개 생성 가능 → enum은 인스턴스 하나임
data class
- 데이터만 담기 위한 클래스
- getter/setter 자동 생성
고차함수 vs 순수함수 vs 일급객체
고차함수
- 함수를 인자로 전달받거나 함수를 반환하는 함수
순수함수
- side effect 없음 : 입력이 같으면 출력이 같다
일급객체
- 함수의 인자로 전달 가능
- 함수의 반환값에 사용 가능
- 변수에 담을 수 있음
obejct vs companion object
object
- 클래스를 정의하면서 객체 생성
- 상속 가능
companion object
- 코틀린에는 static 없다
- 말그대로 동반 객체임
- 클래스의 private 데이터에 접근 가능
lateinit VS by lazy
lateinit
- var
- primitive에 사용 불가능
- null을 통한 초기화 불가능
by lazy
- val
- 기본 synchronized로 동작