在AS3
中,以下方法接受任何类型的参数:
public function myFunc(data:*) :void
是否可以将类型限制为特定包装?这样的事情可能是:
public function myFunc(data:(my.package:*)) //Accepts any type from my.package
答案 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
可能还有一种方法可以达到你想要的效果,但我不确定。