2017-09-22 2 views
4

array 일반 collection 밖으로 제네릭을 얻는 방법?Kotlin : 일반 컬렉션에서 일반 컬렉션

val genericArray: Array<E> = (genericCollection as java.util.Collection<E>).toArray() as Array<E> 

이 갈 올바른 방법인가, 아니면 더 우아한 해결책이 :

나는 다음과 같은 짓을 한거야?

귀하의 도움을 기다리고 있습니다!

나는이 도우미 확장을 작성 결국

편집 :

fun <E> Collection<E>.toUntypedArray(): Array<E> { 
    @Suppress("UNCHECKED_CAST") 
    return arrayOf(size, this) as Array<E> 
} 

합니까 당신은이 문제에 대한 더 나은 솔루션이의 누구?

답변

0

Java Collection에 캐스트 할 필요가 없습니다.

fun example() { 
    val collection: Collection<Int> = listOf() 
    val typeArray = collection.toTypedArray() 
} 

fun <T> example2(collection: Collection<T>) { 
    val typeArray = arrayof(collection) 
} 
+0

하지만 그게 문제입니다. toTypedArray()는 구체화 된 함수이며 제네릭을 입력으로 사용할 수 없습니다. – Poweranimal

+0

@Poweranimal 내 업데이트를 참조하십시오. – Joshua

+1

배열 >을 반환하고 배열 을 반환하지 않으므로이 방법도 작동하지 않습니다. – Poweranimal

관련 문제