Как создать экземпляр Kotlin generic

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

Обратите внимание, что я не контролирую вывод «основного» универсального Kotlin и, следовательно, не могу использовать дисперсию; однако я могу гарантировать, что это класс Kotlin с возможностью создания экземпляров (не Java), который имеет конструктор с нулевым аргументом.

Также обратите внимание, что я уже прочитал это (не заставив его работать): https://youtrack.jetbrains.com/issue/KT-6728

Немного мнения - очень уж понравился Котлин после недели-двух игры.

Код C# / очень простой пример. Java очень похож:

using System;

namespace GenInstance
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine ("Hello World!");

            var w = new Instancer<Whatever> ().Map ();
            Console.WriteLine (w);
            Console.ReadLine ();
        }
    }

    public class Instancer<T> where T : new() {
        public T Map() {
            return new T();
        }
    }

    public class Whatever {
        public override string ToString ()
        {
            return "My Instance";
        }
    }
}

person user1210708    schedule 15.11.2015    source источник
comment
Не могли бы вы уточнить, что вы подразумеваете под В C # и Java эта задача очень проста? Не могли бы вы показать пример кода?   -  person Alexander Udalov    schedule 16.11.2015
comment
Проблемы с вводом кода.   -  person user1210708    schedule 16.11.2015
comment
Ой. Трудно поверить, что что-то настолько элементарное и критичное еще не реализовано. Спасибо.   -  person user1210708    schedule 16.11.2015
comment
Это невозможно бесплатно в JVM, потому что универсальные типы не конкретизируются во время выполнения, поэтому я не уверен, как бы вы сделали это в Java.   -  person Alexander Udalov    schedule 16.11.2015
comment
@AlexanderUdalov как насчет вашего последнего комментария в KT-6728? Разве не в этом дело? inline fun <reified T : Any> create(): T = T::class.primaryConstructor!!.call()   -  person Grigory Katkov    schedule 16.11.2015
comment
Это использование отражения во время выполнения, которое не бесплатно, как в С#, где универсальные типы овеществлены, и о чем, я думаю, был исходный вопрос.   -  person Alexander Udalov    schedule 16.11.2015