基元的泛型数组


是否可以

在 Kotlin 中创建一个类型参数 T 的泛型类,用于创建原语数组?我正在尝试创建一个可以由原始数组支持的列类。是否可以在 Kotlin 中普遍执行此操作?

class Foo<T>{n: Int) {
  // How to make this int[]?
  // Or IntArray?
  val data = Array<T>(n)
}

我能想到的最接近的解决方案是将data Any类型设为lateinit var并创建一个inline fun,然后允许使用 reified 创建类型 T 的数组。

class Foo<T>(val n: Int) {
    // How to make this int[]?
    // Or IntArray?
    lateinit var data: Any
    inline fun <reified T> createNullArray() {
        data = arrayOfNulls<T>(n)
    }
}

编辑 - 如果您要这样做,那么为类请求泛型是没有意义的。

class Foo(val n: Int) {
    lateinit var data: Any
    inline fun <reified T> createNullArray() {
        data = arrayOfNulls<T>(n)
    }
}

最新更新