코틀린은 몇 가지 내장 애너테이션을 제공하여 코드에 메타데이터를 추가하고 특정 동작을 지정할 수 있습니다. 여기에는 주요 내장 애너테이션 몇 가지에 대한 설명이 포함되어 있습니다.
1. @Deprecated
@Deprecated 애너테이션은 해당 요소가 더 이상 사용되지 않음을 나타냅니다. 사용자에게 경고 메시지를 표시하고 새로운 대체 방법을 사용하도록 권장합니다.
@Deprecated("This function is deprecated", replaceWith = ReplaceWith("newFunction()"))
fun deprecatedFunction() {
// deprecated function implementation
}
2. @JvmName
@JvmName 애너테이션은 자바 바이트코드에서 생성되는 메서드나 프로퍼티의 이름을 변경할 때 사용됩니다.
@JvmName("concatenateStrings")
fun concat(str1: String, str2: String): String {
return str1 + str2
}
3. @JvmStatic
@JvmStatic 애너테이션은 코틀린에서 정의된 companion object의 메서드를 자바에서 정적(static) 메서드로 사용할 수 있게 합니다.
class MyClass {
companion object {
@JvmStatic
fun staticMethod() {
// static method implementation
}
}
}
4. @JvmOverloads
@JvmOverloads 애너테이션은 디폴트 파라미터 값을 가진 코틀린 함수를 자바에서 사용할 때 모든 파라미터를 명시적으로 지정하지 않아도 되게 합니다.
@JvmOverloads
fun sum(a: Int, b: Int = 0, c: Int = 0): Int {
return a + b + c
}
5. @JvmField
@JvmField 애너테이션은 코틀린 프로퍼티를 자바 필드로 노출할 때 사용됩니다.
class MyClass {
@JvmField
val myField = 42
}
6. @JvmSynthetic
@JvmSynthetic 애너테이션은 코틀린 컴파일러가 생성한 항목을 숨기고자 할 때 사용됩니다.
// MyClass.kt
class MyClass {
private val myField = 42
@JvmSynthetic
fun getMyField(): Int {
return myField
}
}
// MyClass.java
public class MyClass {
private final int myField = 42;
public int getMyField() {
return myField;
}
}
7. @JvmName과 @JvmField를 함께 사용한 예
class MyKotlinClass {
@JvmField
val myField = 42
companion object {
@JvmField
val MY_CONSTANT = 100
@JvmStatic
fun myStaticMethod() {
println("Called from Java")
}
}
}
위의 코드에서 @JvmField를 사용하여 myField와 MY_CONSTANT를 자바에서 필드로 사용하고, @JvmStatic을 사용하여 myStaticMethod를 자바에서 정적 메서드로 사용할 수 있게 했습니다.
내장 애너테이션은 주로 자바와의 상호 운용성을 강화하고, 특정 컴파일러 옵션을 통해 자바에서도 사용할 수 있는 코드를 생성하는 데 활용됩니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 리플렉션 API (0) | 2024.01.03 |
---|---|
코틀린 리플렉션 (0) | 2024.01.02 |
코틀린 애너테이션 클래스 정의 (0) | 2024.01.02 |
코틀린 애너테이션 (0) | 2024.01.02 |
코틀린 타입 별명 (0) | 2024.01.02 |