2011-03-29 30 views
4

我必须读取静态方法内的当前类名。对于非静态方法,我很容易调用getQualifiedClassName(this),但是在静态方法中,这当然是无效的。任何想法 ?AS3从静态方法获取当前类名

谢谢

回答

1

你没有这样做的直接方式。如果仅仅在一个你需要的类中,你可以尝试添加一个静态成员来持有对这个类的引用。

static private const CLASS:Object = YourReflectedClass; 

然后,只需使用在您的静态方法:

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

这将有助于了解更多关于使用和设置。

+0

你是正确的,也许你需要一些更多的信息。我正在用静态方法编写一个类。这个类是从我们项目中的许多类扩展而来的抽象类。问题是类名对于我的方法很重要,在编译期间我不知道使用的子类的名称。现在我的代码使用非静态方法工作,但它不雅观,因为我们必须实例化一个新对象来调用一个可以是静态的方法 – wezzy 2011-03-29 18:06:59

+0

我不确定我是否遵循所有方式,唯一需要的是名称每个实例的类,并希望将这些信息收集到抽象类中的方法中? – goliatone 2011-03-29 18:14:57

+0

是的,我有一个类ParentClass ParentClass.staticMethod()和从ChildClass - > ChildClass扩展ParentClass我可以调用方法ChildClass.staticMethod()。在这个方法里面,我必须读取字符串“ChildClass”调用该方法的子类的名称。 – wezzy 2011-03-29 20:12:00

7

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

+0

你必须在'prototype'之前给出类名,就像'MyClass.prototype.constructor'一样......你不能直接在'MyClass'的静态函数内调用'prototype.constructor'。有没有办法指定'MyClass'?我正在寻找解决方案...... – 2014-08-13 06:07:14

相关问题