BLO9
Kotlin 등 개발 관련 포스팅합니다.
[자바에서 코틀린으로 - 5] 코틀린 장단과 나의 생각

코틀린의 장점은 Null safety - 안전한 호출과 캐스팅, 확장함수, 람다 표현식, 불변성, Type alias 같은 것들이 있다.

Null safety

코틀린은 non-nullable을 기본으로 null 값을 사용하기 위해선 nullable로 선언해야한다.

class Foo
class Bar: Foo {
    fun baz(): String { // ... }
}

val foo: Foo? = some()
val bar = foo as? Bar

println("${bar?.baz()}");

nullable로 선언할 경우 위와같은 코드가 안전하게 작동한다.

확장함수

Java에선 특정 객체를 활용한 결과가 필요할 때는 Util class에 static method를 사용하였지만 Kotlin은 함수를 객체안에 주입할 수 있다.

fun Foo.abc() {
    println("abc invoke")
}

추가로 .invoke(:), .plus(:), .toString() .. 등을 Operator overloading로 확장할 경우 더욱 강력하게 활용할 수 있다.

람다식

Java에선 콜벡인터페이스를 상속해야 지역/전역으로 사용가능 하지만 코틀린은 코드의 양을 줄여준다. 람다식은 자바8에선 사용가능 하지만 안드로이드에선 6까지 지원하는 문제가 있다.

불변성

Immutable가 권장사양으로 var는 재설정 가능, val재설정 불가로 Collection 부분도 읽기전용 객체를 생성할 수 있다.

Type aliase

단순하지만 코드의 가독성을 증가시켜주는 기능이다.

typealias MyClass = Foo

fun ccc(myClass: MyClass) {
    // ...
}

전에도 언급했듯이 모두 스칼라에 있는 기능이며 코틀린이 작성이 조금 더 쉬울뿐이다. 본인은 안드로이드에서 발생했던 자바의 단점을 보안하기 위해 코틀린을 사용하였지만 서버 사이드는 레퍼런스도 적고, 속도문제와 안정성문제를 고려해야한다.