我有一个丑陋的问题。我有两个字符串变量(className 和 staticMethod)存储类的名称以及我必须调用的静态方法:
package {
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
public class ClassPlay extends Sprite {
public function ClassPlay() {
new Foo();
var className:String = 'Foo';
var staticMethod:String = 'bar';
var classClass:Class = getDefinitionByName(className) as Class;
try {
classClass[staticMethod]();
} catch (e:Error) {}
}
}
}
这是学科类别:
package {
public class Foo {
public static function bar():void {trace('Foo.bar() was called.');}
}
}
它工作得非常完美。当您注释掉这一行(第 9 行)时出现问题:
// new Foo();
如果没有这一行,它将退出并出现异常:
ReferenceError: Error #1065: Variable Foo is not defined.
如果没有实例化,我怎么能做到这一点?如果这是不可能的,有没有办法从字符串变量实例化该类?或者如果这仍然是一个不好的做法,你会怎么做? (我必须使用这两个未知的字符串变量。)
提前致谢。
原因是编译器会删除不必要的类 - 如果您没有对该类的显式引用Foo
在某个地方,它不会出现在您的最终应用程序中。
您可以在其他地方引用并仍然强制加载它 - 例如,对类的引用的静态数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)