如何实例化泛型类型的新实例

Jaj*_*ris 14 kotlin

在C#中,您可以在泛型上放置一个新约束来创建泛型参数类型的新实例,在Kotlin中是否有等价物?

现在我的工作是:

fun <T> someMethod(class : () -> T) {
    val newInstance = class()
}
Run Code Online (Sandbox Code Playgroud)

而我正在调用someMethod()

someMethod<MyClass>(::MyClass)
Run Code Online (Sandbox Code Playgroud)

但我想做这样的事情:

fun <T : new> someMethod() {
    val newInstance = T()
}
Run Code Online (Sandbox Code Playgroud)

那可能吗?

Kir*_*man 13

目前,这是不可能的.您可以对问题https://youtrack.jetbrains.com/issue/KT-6728竖起大拇指,投票支持添加此功能.

至少,您可以省略泛型类型,因为Kotlin可以推断它:

someMethod(::MyClass)
Run Code Online (Sandbox Code Playgroud)