본문 바로가기
Kotlin

[Kotlin] @JvmField와 @JvmStatic의 차이

by Nhahan 2025. 3. 20.

겉보기엔 둘 다 INSTANCE를 통하지 않고 곧바로 접근할 수 있게 해주는 것처럼 보인다.

그럼 둘 다 INSTANCE를 없애주는데 무엇이 다를까?

 

@JvmField

자바에서 필드에 직접 접근해야 할 때 사용 (단, 자바에서 null 설정이 가능하여 코틀린의 null 안정성이 깨질 수 있다)

 

@JvmStatic

자바에서 정적 메서드로 접근하고 싶을 때 사용

 


 

예시를 보면 이해가 쉽다.

object MessageBroker {
    @JvmField var maxMessagePerSecond = 0
    @JvmStatic var totalMessagesSent = 0
}

 

// @JvmField
MessageBroker.maxMessagePerSecond = 10; // 필드 직접 접근
int max = MessageBroker.maxMessagePerSecond;

// @JvmStatic
MessageBroker.setTotalMessagesSent(20); // 정적 setter 호출
int total = MessageBroker.getTotalMessagesSent(); // 정적 getter 호출

 

'Kotlin' 카테고리의 다른 글

[Kotlin in Action] 6.1 널 가능성  (0) 2025.03.22
[Kotlin in Action] 5.5 수신 객체 지정 람다: with와 apply  (0) 2025.03.20
[Kotlin] @JvmStatic  (0) 2025.03.20
[Kotlin] @JvmField  (0) 2025.03.20
[Kotlin] @JvmOverloads  (0) 2025.03.20

댓글