将参数类型限制为包,可能吗?

时间:2013-02-25 12:02:27

标签: actionscript-3 flash flex

AS3中,以下方法接受任何类型的参数:

public function myFunc(data:*) :void

是否可以将类型限制为特定包装?这样的事情可能是:

public function myFunc(data:(my.package:*)) //Accepts any type from my.package 

2 个答案:

答案 0 :(得分:3)

这是可能的,但在运行时只能进行类型控制。

import flash.utils.getQualifiedClassName;
public function myFunc(data:*):void {
    if (data is Object) {
        var fqcn:String=getQualifiedClassName(data);
        if (fqcn.slice(0,10)!='my.package') return; // otherwise work
        // work here
    } // simple types process if needed
}

答案 1 :(得分:1)

这听起来像是一个设计问题。在编译期间使这项工作的一种方法是参数类型是自定义类:

public function myFunc(data:MyCustomClass):void

假设my.package中的所有类都有所不同,您可以创建一个扩展Object的自定义基类,并使my.package中的所有类从此基类扩展。当然,如果你的my.package类的继承不那么广泛,那么你到目前为止还不需要。例如,如果DisplayObject中的所有类都属于该类型,则只应从my.package延伸。

使用namespaces可能还有一种方法可以达到你想要的效果,但我不确定。