从静态方法中获取当前类名的 AS3 实现

5

我需要在一个静态方法中读取当前类名。对于非静态方法,我只需调用getQualifiedClassName(this)即可,但在静态方法中,这当然是无效的。有什么想法吗?

谢谢

2个回答

7
您可以在类的静态方法中使用getQualifiedClassName(prototype.constructor)。

prototype之前,您必须给出类名,例如MyClass.prototype.constructor...您不能在MyClass的静态函数中直接调用prototype.constructor。有没有一种方法不指定MyClass?我也在寻找解决方案... - Marson Mao

1

你没有直接的方法来做到这一点。如果只是在一个类内部需要这样做,你可以尝试添加一个静态成员来保存对该类的引用。

static private const CLASS:Object = YourReflectedClass;

然后,在您的静态方法中使用它:

protected static function doReflection(): void {
   var className:String = getQualifiedClassName(CLASS);
}

了解更多关于使用和设置将会很有帮助。


你说得对,也许你需要更多的信息。我正在编写一个带有静态方法的类。这个类是我们项目中许多类扩展的抽象类。问题在于类名对我的方法很重要,在编译时我不知道使用的子类的名称。现在我的代码使用非静态方法工作,但这很不优雅,因为我们必须实例化一个新对象来调用可以是静态的方法。 - wezzy
我不确定我完全理解了,您所需要的仅是每个实例的类名称,并希望在抽象类中编写一个方法来收集这些信息? - goliatone
是的,我有一个名为ParentClass的类,其中包含ParentClass.staticMethod()方法。从ChildClass -> ChildClass扩展ParentClass,我可以调用ChildClass.staticMethod()方法。在这个方法内部,我必须读取字符串“ChildClass”,即调用该方法的子类的名称。 - wezzy
你说的没错,但你想从哪里访问staticMethod()? 因为你不能覆盖静态方法。 - goliatone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接