@JvmField
코틀린 컴파일러가 getter / setter 를 자동으로 생성하지 못하도록 막고, 필드를 곧바로 접근하게끔 한다.
class Corporation(
val name: String,
@JvmField val location: String
)
는 아래와 같이 자바로 컴파일 된다.
public static void main(String[] args) {
Corporation company = new Corporation("회사명", "강남구");
String name = company.getName(); // getter 접근
String location = company.location; // 필드에 직접 접근
}
혹은, 싱글턴 객체(object declaration, 객체 선언)을 INSTANCE가 아니라 곧바로 접근 가능하게도 한다.
// @JvmField 없을 시
object MessageBroker { var maxMessagePerSecond = 0 }
// 자바 컴파일
int value = MessageBroker.INSTANCE.getMaxMessagePerSecond(); // INSTANCE 통해 접근
MessageBroker.INSTANCE.setMaxMessagePerSecond(10);
// @JvmField 있을 시
object MessageBroker { @JvmField var maxMessagePerSecond = 0 }
// 자바 컴파일
int value = MessageBroker.maxMessagePerSecond; // INSTANCE 없이 접근
MessageBroker.maxMessagePerSecond = 10;
'Kotlin' 카테고리의 다른 글
[Kotlin] @JvmField와 @JvmStatic의 차이 (0) | 2025.03.20 |
---|---|
[Kotlin] @JvmStatic (0) | 2025.03.20 |
[Kotlin] @JvmOverloads (0) | 2025.03.20 |
[Kotlin] @JvmName (0) | 2025.03.20 |
[Kotlin in Action] 5.4 자바 함수형 인터페이스 활용 (0) | 2025.03.19 |
댓글