2009-08-14 8 views
0

Actionscriptではこれが可能ですか?Actionscriptのインラインインターフェイスの実装

のJava:

URLFetcherFactory.setCreator(
    new IURLFetcherCreator() { 
     public IURLFetcher create() { 
      return new URLFetcher(); 
     } 
    } 
); 

のActionScript:

? 

私はこの疑問を抱いてきたし、それが可能だ示して何かを見つけることができませんでした。もしでしたら、私はここで答えを見つけることができます。ありがとう! Stackoverflow rocks!

答えて

0

あなたは、インターフェイスのインスタンスを作成することはできません。ただし、ファクトリクラスを作成することができます。

また
public class URLFetcherCreator : IURLFetcherCreator { 
    private var _cls : Class; 

    public URLFetcherCreator(Class cls) { 
     this._cls = cls; 
    } 

    public function create() : IURLFetcher 
    { 
     return new cls(); 
    } 
} 

、IURLFetcherを返す関数を受け入れるように変更setCreatorを:

URLFetcherFactory.setCreator(
    function() : IURLFetcher { 
     return new URLFetcher(); 
    } 
); 
+0

ええ、それはAS3は強く型付けされた代表者をサポートしていないことは残念です。ラムダはもっと良くなるだろう。 –

0

これを試してみてください:

URLFetcherFactory.setCreator(
    new IURLFetcherCreator() { 
      public function create():IURLFetcher { 
        return new URLFetcher(); 
      } 
    } 
); 
0

あなたはAS3で匿名内部クラスを使用することはできません。 コールバックのような特別な場合は、匿名の内部クラスの代わりにFunctionを使用できます。

のJava:

interface Callback { 
    void done(String info); 
} 
class Service { 
    void process(Callback callback); 
} 
... 
myService.process(new Callback() { 
    void done(String info) { 
      // trace(info); 
    } 
} 

AS3:

class Service { 
    public function process(callback:Function):void; 
} 
... 
myService.process(function(info:String):void { 
    trace(info); 
});