общие интерфейсы с методами reified

У меня есть несколько объектов для переопределения памяти:

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

Как я могу решить?

    Тип vec1bData не является допустимым заменой для reinterpeter<T> , потому что T vec1bData не является общим, а устанавливается в Vec1b .

    Это означает, что, используя только функцию fun <reified T> data(): reinterpreter<T> , вы должны вернуть reinterpreter<T> . Вместо этого вы возвращаете vec1bData , которая имеет тип reinterpreter<Vec1b> вместо reinterpreter<T> .