Создать экземпляр класса из строкового имени в Haxe

Допустим, я получаю имя класса, который я создал как String. Как я могу создать экземпляр класса с именем, содержащимся в этой строке? Я знаю, что он будет производным от определенного родительского класса, но фактический класс будет другим.


person RCIX    schedule 08.09.2010    source источник


Ответы (1)


var instance : MyClass = Type.createInstance(Type.resolveClass("path.to.MyClass"), []);

Несколько заметок:

  • resolveClass() берет полный путь (включая пакеты) нужного вам класса
  • createInstance() принимает в качестве второго аргумента массив значений, которые применяются к конструктору. Эти значения должны быть в точном числе и должны передаваться, даже если они необязательны (в этом случае хороши нули).
person Franco Ponticelli    schedule 08.09.2010
comment
Но как я могу узнать имя MyClass для экземпляра dataType, когда я получил имя класса из строки? Например: gist.github.com/danbruegge/d51a9d233b4944327be6 Я создаю этот класс с помощью функции. Но как узнать тип данных для экземпляра переменной? - person danbruegge; 08.10.2014
comment
@danbruegge, если вы хотите что-то напечатать во время выполнения, вы просто не можете. Обычно вы хотите иметь общий общий тип, на который можно положиться, например, интерфейс, базовый класс или typedef. - person Franco Ponticelli; 06.04.2015