Haxe中泛型类型参数的构造

时间:2015-06-03 02:32:02

标签: constructor haxe generic-type-argument

我正在尝试基于函数类型参数实例化一个类 虽然documentation表示有可能,但我无法使其发挥作用。

请考虑以下代码:

// Dialog base class
// Every dialog in my application will derive from this
class Dialog
{
    public function new()
    {
        // do some stuff here
    }
}

// One of the possible dialogs in the application
// Extends Dialog
class TestDialog extends Dialog
{
    public function new()
    {
        super();
        // do some more stuff
    }
}

// A simple class that tries to instantiate a specialized dialog, like TestDialog 
class SomeAppClass
{
    public function new() 
    {
        var instance = create(TestDialog);
    }

    @:generic
    function create<T:Dialog>(type:Class<T>):T
    {
        return new T();
    }
}

这不适用于以下错误:
create.T does not have a constructor

显然,我做错了什么,但是什么?

1 个答案:

答案 0 :(得分:4)

SpecialDialog可能与<{1}}具有不同的构造函数。 因此,您必须约束它,然后约束到Dialog

Code @ Try Haxe

Dialog