프로젝트를 진행하며 오픈소스를 찾아보거나 유튜브 강의를 찾아보더라도 이미 많은 개발자들이 Kotlin을 통해 안드로이드 개발을 하고 있다는 것을 알 수 있었다. 코틀린 기초를 다시 공부하며 개발자들이 말하는 Kotlin의 장점을 모아보았다
1. 간결하고 효율적인 언어 (타입추론, 묵시적코드제공, 람다표현식지원)
Type Inference (타입추론)
변수를 선언할 때 꼭 필요한 경우가 아니라면 타입추론을 통해 생략이 가능하다
val text : String = "test box"
val text = "test box" //타입생략가능
var testList:Array<Int> = arrayOf(1,2,3,4,5)
var testList = arrayOf(1,2,3,4,5) //타입생략가능
Single-Expression Function (단일 표현식 함수)
1) {}(body)가 한 줄이면 중괄호와 return문을 생략할 수 있다
2) 리턴타입을 추론할 수 있다 => 리턴타입도 생략이 가능하다
코드 양을 줄일 수 있고 읽기에도 좋아서 실무에서 가장 많이 사용하는 방법이라고 한다
fun sum(num1:Int, num2:Int):Int{
return num1+num2)
}
//중괄호와 return문 생략
fun sum(num1:Int, num2:Int) : Int = num1+num2
//중괄호와 return문, return 타입까지 생략
fun sum(num1:Int, num2:Int) = num1+num2
Lambda Expression (람다식)
1) 변수를 함수처럼 사용 가능 하다
2) 자료형 생략이 가능하다
val sum : (Int, Int) -> Int = {x:Int, y:Int -> x+y}
sum(3,4)
//변수의 자료형을 생략
val sum = {x:Int, y:Int -> x+y}
//매개변수 자료형 생략
val sum : (Int, Int)->Int={x+y -> x+y}
3) 안드로이드에서 setOnClickListener를 구현할 때의 간결화 예시
//자바에서 구현할 때
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
.......
//코틀린에서 구현할 때
btnLogin.setOnClickListener{
event
}
2. 더 안전한 코드 (Null Safety)
자바로 안드로이드 개발을 할 때 가장 많이 보았던 NPE(NullPointerException).
Kotlin에서는 NullPointerException을 방어하기 위해 Nullable과 Non-Null타입을 제공한다