如何识别Class引用是否是接口?

时间:2011-10-10 10:39:19

标签: flex actionscript air

2 个答案:

答案 0 :(得分:4)

您可以使用AS3 Commons Reflect获取此信息。你的功能看起来像这样:

function foo(classRef:Class)
{
    var type:Type = Type.forClass(classRef);

    if (type.isInterface)
    {
        //something
    }
}

答案 1 :(得分:3)

我自己的探索。如果class是interface,而不是<factory>节点中的描述XML,那么它将永远不会包含<constructor><extendsClass>。所以,这是一个功能:

private function isInterface(type : *):Boolean {
        var description : XML = describeType(type);
        return (description.factory[0].descendants("constructor").length() == 0
                && description.factory[0].descendants("extendsClass").length() == 0);
}

测试:

trace(isInterface(IEventDispatcher));
trace(isInterface(Button));
trace(isInterface(int));
trace(isInterface(XML));
trace(isInterface(String));

输出:

[trace] true
[trace] false
[trace] false
[trace] false
[trace] false