[kotlin] 애노테이션과 자바의 차이점

애노테이션은 프로그래밍에서 메타데이터를 제공하고 코드를 구성하는 데 도움을 주는 중요한 요소입니다. 코틀린과 자바, 두 언어는 각기 다른 방식으로 애노테이션을 다루며 그 차이점이 있습니다.

1. 애노테이션 문법

코틀린은 애노테이션을 선언하기 위해 @ 기호를 사용합니다. 예를 들어, 다음은 @Deprecated 애노테이션을 코틀린으로 작성한 것입니다.

@Deprecated("This method is deprecated")
fun deprecatedFunction() {
    // function body
}

반면에 자바에서는 애노테이션을 선언하기 위해 @ 기호를 사용합니다. 아래는 자바에서의 @Deprecated 애노테이션 예시입니다.

@Deprecated
public void deprecatedMethod() {
    // method body
}

2. 애노테이션 속성

코틀린의 애노테이션은 속성을 가질 수 있습니다. 이는 애노테이션에 추가적인 정보를 제공하는 데 유용합니다. 다음은 @SerializedName 애노테이션을 코틀린에서 사용하는 예시입니다.

data class DataClass(
    @SerializedName("custom_name") val name: String
)

자바의 애노테이션은 속성을 가질 수 없기 때문에, 속성과 관련된 정보를 전달하기 위해 메타 애노테이션을 사용해야 합니다.

3. Nullable 애노테이션

코틀린에서는 값이 null일 수 있는 경우를 표시하기 위해 @Nullable 애노테이션을 사용할 수 있습니다.

fun processString(@Nullable text: String) {
    // method body
}

자바에서는 이와 유사한 작업을 위해 @Nullable 애노테이션을 사용할 수 있지만, 이 애노테이션을 사용하기 위해서는 별도의 라이브러리를 추가해야 합니다.

4. 애노테이션의 기본값

코틀린에서는 애노테이션에 기본값을 지정할 수 있습니다.

annotation class MyAnnotation(val name: String = "Default Name")

자바에서는 애노테이션의 기본값을 지정할 수 없습니다.

이렇듯, 코틀린과 자바는 애노테이션을 다루는 방식에서 몇 가지 차이를 보입니다. 코틀린은 애노테이션을 선언하는 방식, 속성을 가질 수 있는지 여부, nullable 여부 및 기본값 설정 등에서 자바와 다른 특징을 가지고 있습니다.