안드로이드 공부를 시작하면 자바와 코틀린이라는 두 가지 언어의 선택지를 만나게 된다. 나는 동아리에서 코틀린을 이용했기 때문에 자연스레 코틀린을 먼저 접하게 되었는데 딱히 이유는 알지 못했다. 코틀린이 대세다, 편하다 라는 얘기만 듣고 정작 왜 코틀린이 대세인지는 알지 못했다.
- getter, setter 등을 따로 선언해주지 않아도 된다.
- 람다식이 간결하다.
- filter를 이용해 배열을 반복문 없이 확인할 수 있다.
- object class를 통해 싱글톤 패턴을 쉽게 구현할 수 있다.
- 변수에 null 처리를 못하기 때문에 null point exception이 발생하지 않는다.
- null을 허용하려면 ? 키워드가 필요하다.
- auto-cast를 지원한다.
auto-cast 지원 예시를 살펴보자.
fun calculateTotal(obj: Any){
if(obj is Invoice)
obj.calculate()
}
위의 코드에서 obj에는 어떠한 형식이든 들어갈 수 있다.(코틀린에서 Any는 자바에서 최상위 클래스인 Object와 같은 개념이다) if문 안의 is는 타입을 확인하는 것으로 자바에서의 instanceOf 연산자와 같은 역할을 한다. 여기서 코틀린의 auto-cast가 일어난다. 코틀린은 타입이 맞는지 확인하는 순간 해당 타입이 맞으면 obj를 Any에서 Invoice타입으로 변형한다. 따라서 별도의 타입 변환 없이 obj.calculate()코드가 실행된다.
- 코틀린은 자바와 100% 상호호환이 된다. 자바 코드를 코틀린으로 변환할 수 있고 코틀린 코드를 자바로 변환할 수 있다. 실제로 안드로이드 스튜디오에서 자바 코드를 복붙하면 코틀린으로 변환시켜준다.
- 자바에서 제공하는 툴을 모두 사용할 수 있고 더불어 코틀린만의 추가적인 툴들을 사용할 수 있다.