【发布时间】:2015-03-28 03:04:31
【问题描述】:
我有一个接受Class 类型参数的方法,我只想接受扩展SuperClass 的类。现在,我能想到的就是这个,它对实例进行运行时检查:
public function careless(SomeClass:Class):void {
var instance:SomeClass = new SomeClass();
if (instance as SuperClass) {
// great, i guess
} else {
// damn, wish i'd have known this at compile time
}
}
有没有办法做这样的事情,所以我可以确定Class 实例扩展了一些超类?
public function careful(SomeClass:[Class extends SuperClass]):void {
var instance:SuperClass = new SomeClass();
// all is good
}
【问题讨论】:
-
不太可能 - 虽然我不明白你为什么要这样实例化。为什么不先做
function careful(instance:SuperClass)然后做careful(new MySubClass()),如果不是子类,它会在你身上编译时出错。 -
你需要使用你为某事创建的实例,还是你创建它只是为了检查它是否是一个子类?你能不能只传入一个你知道是子类的新创建的对象并使用它?
-
@mfa 可能有更好的方法来构建我正在处理的应用程序,但是按照所有设置的方式,我需要传入一个 Class 以便它可以通过以下方式多次实例化其他对象稍后。上面的具体代码只是为了展示一个简单的例子。
标签: actionscript-3 class actionscript superclass