Мои собственные исследования.Если класс является интерфейсом, то в описании XML в узле <factory>
он никогда не будет содержать <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