Generics 具有具体化方法的通用接口
我有几个对象要重新解释内存:Generics 具有具体化方法的通用接口,generics,interface,kotlin,inline,kotlin-reified-type-parameters,Generics,Interface,Kotlin,Inline,Kotlin Reified Type Parameters,我有几个对象要重新解释内存: 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
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)
}
接口重新解释程序{
运算符fun get(索引:Int):T
运算符乐趣集(索引:Int,值:T):任意
}
对象数据:重新解释程序{
重写运算符fun get(索引:Int)=Vec1b(数据,索引*Vec1b.size)
覆盖乐趣集(索引:Int,值:Vec1b)=value.to(数据,索引*Vec1b.size)
}
但是当我打字的时候
inline fun <reified T> data():reinterpreter<T> = when (T::class.java) {
Vec1b::class.java -> vec1bData
}
inline fun data():reinterpreter=when(T::class.java){
Vec1b::class.java->vec1bData
}
我得到:
必需的reinterpeter
,但找到的vec1bData
如何解决?类型
vec1bData
不是reinterpeter
的有效替代品,因为vec1bData
的T
不是泛型,而是设置为Vec1b
这意味着,仅取函数签名
fun data():reinterpreter
,必须返回一个reinterpreter
。相反,您返回一个vec1bData
,它是reinterpreter
类型,而不是reinterpreter类型vec1bData
不是reinterpeter
的有效替代品,因为vec1bData
的T
不是泛型,而是设置为Vec1b
这意味着,仅取函数签名fun data():reinterpreter
,必须返回一个reinterpreter
。相反,您返回一个vec1bData
,类型为reinterpreter
,而不是reinterpreter
。在Kotlin中,使用as
关键字进行转换将有帮助。在Kotlin中,使用as
关键字进行转换将有帮助。