Frage

Ist so etwas möglich in Actionscript?

Java:

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

Actionscript:

?

Ich habe über diese fragen, und haben es nicht gelungen, etwas zu finden, dass es möglich ist zeigt. Dachte, wenn es war möglich, würde ich in der Lage sein, hier eine Antwort zu finden. Vielen Dank! Stackoverflow rock!

War es hilfreich?

Lösung

Sie können keine Instanz einer Schnittstelle erstellen. Sie können jedoch eine Factory-Klasse erstellen:

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

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

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

Alternativ Änderung setCreator eine Funktion zu übernehmen, die eine IURLFetcher zurückgibt:

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

Andere Tipps

Versuchen Sie folgendes:

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

Sie können nicht anonyme innere Klassen in AS3 verwenden. Für Sonderfälle wie Rückrufe können Sie Funktion anstelle von anonymen inneren Klassen verwenden.

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);
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top