4
Create generic 2D array in Kotlinに触発されていますが、タイプTの配列を持つ汎用クラスを作成する次のコードがあります。ただし、上限を追加するとコンパイルエラーが発生します。これを行う方法はありますか?kotlinにComparable <T>の配列を持つジェネリッククラスを作成しますか?
//This code compiles:
class GenericClass<T> protected constructor(size : Int, arrayFactory: (Int) -> Array<T>) {
companion object {
inline fun <reified T> invoke(size : Int)
= GenericClass(size, { size -> arrayOfNulls<T>(size) })
}
val array = arrayFactory(size)
}
//Compile errors:
class GenericClass<T : Comparator<T>> protected constructor(size : Int, arrayFactory: (Int) -> Array<T>) {
companion object {
inline fun <reified T : Comparator<T>> invoke(size : Int)
= GenericClass(size, { size -> arrayOfNulls<T>(size) })
}
val array = arrayFactory(max)
}
コンパイルエラーは、次のとおりコンストラクタGenericClassにT行き
- タイプパラメータ>(大きさ:INT、arrayFactory:(INT) - >配列)が満たされていない。推論タイプT?コンパイラのサブタイプではありません
これはトリックでした。ありがとう –