겉보기엔 둘 다 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 |
댓글