从函数参数动态实例化一个类型化的Vector?

jed*_*ung 5 constructor class vector dynamic actionscript-3

对于我正在尝试开发的游戏,我正在编写一个资源池类,以便在不调用"new"运算符的情况下回收对象.我希望能够指定池的大小,我希望它是强类型的.

由于这些考虑,我认为Vector是我的最佳选择.但是,由于Vector是最终类,我无法扩展它.所以,在这种情况下,我认为我会使用组合而不是继承.

我看到的问题是这个 - 我想用两个参数实例化类:大小和类类型,我不知道如何将类型作为参数传递.

这是我试过的:

public final class ObjPool
{
    private var objects:Vector.<*>;

    public function ObjPool(poolsize:uint, type:Class)
    {
        objects = new Vector.<type>(poolsize);  // line 15
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试构建时从FlashDevelop收到的错误:

\ src\ObjPool.as(15):col:18错误:访问未定义的属性类型.

有人知道这样做的方法吗?看起来Flash编译器不喜欢在Vector括号表示法中接受变量名.(我尝试将构造函数参数"type"更改为String作为测试,没有结果;我也尝试在那里放置一个getQualifiedClassName,但这也没有用.对象var的取消也没有结果.)另外,我'我甚至不确定类型"Class"是否是正确的方法 - 有人知道吗?

谢谢!

编辑:为了澄清,我这样称呼我的班级:

var i:ObjPool = new ObjPool(5000, int);
Run Code Online (Sandbox Code Playgroud)

目的是指定大小和类型.

双重编辑:对于任何偶然发现这个问题寻找答案的人,请使用Java编程语言研究泛型.截至撰写本文时,它们并未在Actionscript 3中实现.祝您好运.

Tyl*_*eto 1

这是一个有趣的问题(+1!),主要是因为我以前从未尝试过。从你的例子看来这是不可能的,我确实觉得很奇怪,可能与编译器的工作方式有关。我质疑你为什么要这样做。Vector 相对于 Array 的性能优势主要是其类型化的结果,但是您显式地将其类型声明为未定义,这意味着您失去了性能增益。那么为什么不直接使用数组呢?不过只是食物而已。

编辑

我可以确认这是不可能的,它是一个开放的错误。请参阅此处: http: //bugs.adobe.com/jira/browse/ASC-3748抱歉这个消息!

泰勒.