2015-10-21 3 views
4

В C# вы можете поместить новое ограничение на общий тип для создания нового экземпляра типичного типа параметра, есть ли эквивалент в Kotlin?Как создать экземпляр нового экземпляра родового типа

Сейчас моя работа вокруг этого:

fun <T> someMethod(class :() -> T) { 
    val newInstance = class() 
} 

и я звоню SomeMethod(), как этот

someMethod<MyClass>(::MyClass) 

, но я хотел бы сделать что-то вроде этого:

fun <T : new> someMethod() { 
    val newInstance = T() 
} 

Возможно ли это?

ответ

6

В настоящее время это невозможно. Вы можете дать thumbs-up для вопроса https://youtrack.jetbrains.com/issue/KT-6728, чтобы проголосовать за добавление этой функции.

По крайней мере, вы можете оставить общий тип, потому что Котлин может вывести его:

someMethod(::MyClass)