2017-11-01 9 views
1

kotlin .map 인라인 함수를 자세히 살펴보면 질문이 떠 올랐습니다. 정의는 다음과 같습니다.Java의 공유 인터페이스와 Kotlin (예 : List <>)의 관계

public inline fun <T, R> Iterable<T>.map(transform: (T) -> R): List<R>{ 
return mapTo(ArrayList<R>(collectionSizeOrDefault(10)), transform)} 

함수 정의에서 Collection.kt에 정의 된 List를 반환해야합니다. 그러나 Java (List.java)의 List 인터페이스를 구현하는 ArrayList를 리턴합니다.

Java 인터페이스와 Kotlin 인터페이스의 관계는 무엇입니까? 더 비슷한 예제가있을 것이라고 생각합니다. 아마도 Set 또는 Map일까요? JVM이 플랫폼에서

답변

4

는 코 틀린 인터페이스 kotlin.collections.List자바 인터페이스 java.util.List를 매핑하고, 그래서 kotlin.collections.MutableList입니다.

이 Kotlin 인터페이스의 사용법은 바이트 코드로 Java List 인터페이스의 사용법으로 컴파일된다는 것을 의미합니다. 반면에 라이브러리에서 읽은 서명에서 Java List 인터페이스 사용은 kotlin.collections.(Mutable)List으로 표시됩니다.

더 매핑 된 유형이 있습니다 : see the reference.

는 여전히 코 틀린에 kotlin.* 클래스로 자바 유형을 나타내는 예를 들어, 기본 요소 및 배열되지되는 클래스에서 우리를 절약 할 수, 원활한 방법으로 자바와 그 반대의 코 틀린를 호출 할 수 있습니다, 그리고 immutability through interfaces을 소개합니다.

+0

감사합니다. 답변은 포괄적이고 정확하며 참조 자료입니다. – Yao