1

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

public function myFunc(data:*) :void

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

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

2 回答 2

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
}
于 2013-02-25T12:11:33.600 回答
1

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

public function myFunc(data:MyCustomClass):void

假设其中的所有类my.package都是不同的,您可以创建一个自定义基类,该基类扩展Object并让您的所有类都my.package从该基类扩展。当然,但是,如果您的my.package类的继承范围不那么广泛,那么您就不需要这么远了。例如,只有DisplayObject当其中的所有类my.package都属于该类型时,您才应该扩展 from。

可能还有一种方法可以完成您想要使用的内容namespaces,但我不确定。

于 2013-02-25T13:44:10.890 回答