2009-09-03 6 views
7

配列コレクションのaddItem()関数をオーバーライドしています。追加された項目が特定のインタフェースを実装しているかどうかを検出したいと思います。インスタンスがActionScript 3.0でインタフェースを実装しているかどうかを確認するには

以前は、is演算子を使用してクラスの型を検出しましたが、クラス用のインターフェイスを使用していますので、オブジェクトがインターフェイスを実装しているかどうかをテストします。

私はインターフェイスとしてオブジェクトをキャストしようとし、それがnullでないかどうかを確かめることができます。これはこれを行う最善の方法ですか?

インターフェイスタイプのオブジェクトだけを受け入れる新しいaddFunction()を作成することもできます。

答えて

13

ですが、インターフェイスをテストすることはできます。

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768" creationComplete="application1_creationCompleteHandler(event)"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 
      public var test:TestInterface = new TestInterface() //implements ITestInterface 


      protected function application1_creationCompleteHandler(event:FlexEvent):void 
      { 
       trace(test is ITestInterface); //true 
      } 

     ]]> 
    </fx:Script> 
</s:Application> 
+0

ジョエルさん、おかげさまで私は怠惰でしたが、うまくいく方法を知りたかったのですが、悪い練習をしていたかもしれません。 – robmcm

+0

良い選択!タイトルの末尾に「AS3」を追加できますか? –

3

ジョエルの答えに追加するには:あなたはインターフェースクラスが実装(およびそのサブクラス、親クラス、など)についての詳細情報が必要な場合は、AS3Commonsライブラリーは、利便性の数を持っていClassUtilsクラスを持っていますメソッド。

関連する問題