答案 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