2011-10-10 7 views

答えて

4

あなたがこの情報を取得するためにAS3 Commons Reflectを使用することができます。あなたの関数は次のようになります:

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

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

ありがとう、この素晴らしいライブラリについて知りませんでした –

+0

このライブラリに関する情報を共有してくれてありがとうございます。 – Mady

3

私自身の探検。 classが<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 
関連する問題