반응형
1. JVM Annotation
(1) @JvmOverloads
- 코틀린과 자바의 상호 운용을 위해 오버로드된 메서드를 자동으로 생성(자바의 경우 기본 인자를 지원하지 않음)
- 생성자, 함수에 사용 가능
class Hello {
@JvmOverloads
fun sayHello(name: String = "Guest", age: Int = 0) {
println("Hello, $name. You are $age years old.")
}
}
(2) @JvmField
- 코틀린의 프로러티는 getter, setter를 통해 접근을 할 수 있는데, 이를 직접 필드 접근이 가능하도록 할 때 사용
class Person {
@JvmField
val name: String = "홍길동"
}
(3) @JvmName
- 함수, 프로퍼티, 파일 이름 등을 지정된 이름이 아닌 다른 이름으로 java에서 호출이 가능하도록 함
@file:JvmName("MathUtils")
fun add(a: Int, b: Int): Int = a + b
(4) @JvmStatic
- 코틀린의 경우 companion object를 통해 static과 비슷한 효과를 내게 되는데 실제 자바에서 companion object를 접근할 때 static이 아니기 때문에 이를 해결하기 위한 어노테이션
- 해당 어노테이션을 붙이면 java에서 static으로 사용 가능
class Hello {
companion object {
@JvmStatic
fun sayHi() {
println("Hi from Kotlin")
}
fun sayBye() {
println("Bye from Kotlin")
}
}
}
- Java에서 호출 시
Utils.sayHi(); // @JvmStatic의 경우
Utils.Companion.sayBye();
반응형
'공부' 카테고리의 다른 글
Kotlin 기본 문법 정리 - 범위 지정 함수 (2) | 2025.08.04 |
---|---|
Kotlin 기본 문법 정리 - 예외처리 (1) | 2025.08.02 |
Kotlin 기본 문법 정리 - 컬렉션(Collection) (0) | 2025.08.01 |
Kotlin 기본 문법 정리 - Nullable (0) | 2025.07.31 |
Kotlin 기본 문법 정리 - enum (1) | 2025.07.29 |