0

私はメモリ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

タイプvec1bDataは、reinterpeter<T>の代用として有効ではありません。

つまり、機能シグニチャfun <reified T> data(): reinterpreter<T>の場合は、reinterpreter<T>を返す必要があります。代わりにvec1bDataを返します。これはreinterpreter<T>の代わりにreinterpreter<Vec1b>のタイプです。

+0

私はどのように解決しなければなりません/どのような変更? – elect

+0

キャスティングはここで助けになります、Kotlinでは 'as'キーワードで終わっています。 – user3151902

関連する問題