0

I 메모리 reinterpreter하는 여러 개체가 있습니다일반적인 인터페이스

interface reinterpreter<T> { 
    operator fun get(index: Int): T 
    operator fun set(index: Int, value: T): Any 
} 

object vec1bData : reinterpreter<Vec1b> {  
    override operator fun get(index: Int) = Vec1b(data, index * Vec1b.size)  
    override fun set(index: Int, value: Vec1b) = value.to(data, index * Vec1b.size)  
} 

을하지만

inline fun <reified T> data():reinterpreter<T> = when (T::class.java) {  
     Vec1b::class.java -> vec1bData  
} 

를 입력 할 때 내가 얻을 :

reinterpeter<T>을 필요하지만 vec1bData

발견

어떻게 해결할 수 있습니까? vec1bDataT은 일반적인하지만 Vec1b으로 설정되어 있지 않기 때문에

답변

2

유형 vec1bDatareinterpeter<T>에 대한 유효한 대체하지 않습니다.

즉, 기능 서명 fun <reified T> data(): reinterpreter<T> 만 사용하면 reinterpreter<T>을 반환해야합니다. 대신 vec1bData을 입력하면 reinterpreter<T> 대신 reinterpreter<Vec1b> 유형이됩니다.

+0

어떤 생각을 어떻게 풀어야합니까/어떤 변화가 있습니까? – elect

+0

주조가 도움이 될 것입니다. Kotlin에서는 'as' 키워드로 끝납니다. – user3151902