Kotlin의 JvmOverloads 주석
이번 블로그에서는 Kotlin의
JvmOverloads
애노테이션에 대해 알아보도록 하겠습니다.이 문서는 원래 amitshekhar.me에 게시되었습니다.
Kotlin의 가장 좋은 점은 Java 상호 운용성을 염두에 두고 설계되었다는 것입니다. 기존 Java 코드를 Kotlin에서 호출할 수 있고 Kotlin 코드도 Java에서 호출할 수 있음을 의미합니다. 두 가지 방법이 모두 지원됩니다.
오늘은
JvmOverloads
어노테이션에 대해 알아보고자 하여 Java에서 Kotlin 코드를 호출하는 데 중점을 둘 것입니다.이것을 배우는 가장 좋은 방법은 예를 들어보는 것입니다.
아래와 같이 Kotlin에
data
클래스Session
가 있다고 가정합니다.data class Session(val name: String, val date: Date = Date())
아래와 같이 Kotlin에서 객체를 생성할 수 있습니다.
val sessionOne = Session("Session One", Date())
val sessionTwo = Session("Session Two")
코드의 두 줄은 두 번째 개체에 대해 예상대로 컴파일되며 기본값은
Date
입니다.그러나 아래와 같이 Java에서 객체를 생성할 때:
Session sessionOne = new Session("Session One", new Date());
Session sessionTwo = new Session("Session Two"); // compilation error
첫 번째 줄은 컴파일되지만 두 번째 줄은 매개변수로 전달하지 않았기 때문에 컴파일되지 않습니다
Data
. 다음과 같은 오류가 발생합니다.Session(java.lang.String, java.util.Date)' in 'com.example.Session' cannot be applied to '(java.lang.String)
Java는 기본 매개변수를 지원하지 않는다는 것을 알고 있습니다. 과부하를 지원합니다.
그리고 Kotlin은 기본 매개변수를 지원합니다.
따라서
@JvmOverloads
를 사용해야 합니다. 기본 매개변수 값을 대체하는 함수에 대한 오버로드를 생성하도록 Kotlin 컴파일러에 지시합니다.data
클래스Session
를 아래와 같이 업데이트해 보겠습니다.data class Session @JvmOverloads constructor(val name: String, val date: Date = Date())
@JvmOverloads
를 사용하여 Kotlin 컴파일러에 함수에 대한 오버로드를 생성하도록 지시했습니다.이제 아래와 같이 Java에서 객체를 생성하면:
Session sessionOne = new Session("Session One", new Date());
Session sessionTwo = new Session("Session Two");
그리고 완벽하게 작동합니다. Kotlin 컴파일러가 함수에 대한 오버로드를 생성했기 때문에 코드의 두 줄 모두 예상대로 컴파일됩니다.
Kotlin에서
JvmOverloads
주석을 사용하는 방법입니다.지금은 그게 다입니다.
감사
Amit Shekhar
다음에서 나와 연결할 수 있습니다.
Read all of my high-quality blogs here.
Reference
이 문제에 관하여(Kotlin의 JvmOverloads 주석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amitiitbhu/jvmoverloads-annotation-in-kotlin-2bei텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)