Kotlin의 JvmField 주석
이 블로그에서는 Kotlin의
JvmField
주석에 대해 알아봅니다.이 문서는 원래 amitshekhar.me에 게시되었습니다.
Kotlin의 가장 좋은 점은 Java 상호 운용성을 염두에 두고 설계되었다는 것입니다. 기존 Java 코드를 Kotlin에서 호출할 수 있고 Kotlin 코드도 Java에서 호출할 수 있음을 의미합니다. 두 가지 방법이 모두 지원됩니다.
오늘은
JvmField
어노테이션에 대해 알아보려고 하므로 Java에서 Kotlin 코드를 호출하는 데 중점을 둘 것입니다.이것을 배우는 가장 좋은 방법은 예를 들어보는 것입니다.
아래와 같이 Kotlin에
data
클래스 Session
이 있다고 가정합니다.data class Session(val name: String, val date: Date = Date())
아래와 같이 객체를 생성하고 Kotlin에서
name
을 가져올 수 있습니다.val session = Session("Session", Date())
val name = session.name
예상대로 작동합니다.
그러나 객체를 생성하고 Java에서 아래와 같이
name
을 가져올 때:Session session = new Session("Session", new Date());
String name = session.name; // compilation error
컴파일되지 않습니다. Java에서 아래와 같이 getter 메서드를 사용해야 합니다.
Session session = new Session("Session", new Date());
String name = session.getName();
이제 예상대로 컴파일되고 작동합니다.
따라서 질문은 다음과 같습니다. Kotlin에서 사용하는 것처럼 getter 메서드 없이 사용할 수 있습니까?
대답은 '예'입니다.
JvmField
주석을 사용합니다. 따라서 필드를 getter 또는 setter가 아닌 일반 필드로 사용하려면 컴파일러에 동일한 getter 및 setter를 생성하지 않도록 지시하고 @JvmField
주석을 사용하여 필드로 노출해야 합니다. .data
클래스 Session
을 아래와 같이 업데이트해 보겠습니다.data class Session(@JvmField val name: String, val date: Date = Date())
@JvmField
필드에 대해 name
을 사용하여 Kotlin 컴파일러에 동일한 getter 및 setter를 생성하지 않고 필드로 노출하도록 지시했습니다.이제 아래와 같이 개체를 만들고 Java에서
name
을 가져오면 다음과 같습니다.Session session = new Session("Session", new Date());
String name = session.name;
이제 완벽하게 작동합니다. Kotlin 컴파일러는 이에 대한 getter 및 setter를 생성하지 않고 필드로 노출하므로 예상대로 컴파일됩니다.
Kotlin에서
JvmField
주석을 사용하는 방법입니다.지금은 그게 다입니다.
감사
Amit Shekhar
다음에서 나와 연결할 수 있습니다.
Read all of my high-quality blogs here.
Reference
이 문제에 관하여(Kotlin의 JvmField 주석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amitiitbhu/jvmfield-annotation-in-kotlin-2p93텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)