我有几个对象来重新解释内存:
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
我该如何解决?
答案 0 :(得分:2)
vec1bData
类型不是reinterpeter<T>
的有效替代品,因为T
的{{1}}不是通用的,而是设置为vec1bData
。
这意味着,仅使用函数签名Vec1b
,您必须返回fun <reified T> data(): reinterpreter<T>
。相反,您会返回reinterpreter<T>
,其类型为vec1bData
而不是reinterpreter<Vec1b>
。