2011-10-10 56 views

回答

4

您可以使用AS3 Commons Reflect得到這個信息。那麼你的函數看起來是這樣的:

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

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

感謝,不知道那該多好庫 –

+0

感謝分享這個庫的信息。 – Mady

3

我自己的探索。如果類是接口,比在<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 
相關問題