Pregunta

Es algo como esto sea posible en ActionScript?

Java:

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

Actionscript:

?

Me he estado preguntando acerca de esto y no he podido encontrar nada que indique que es posible. Robusto si era es posible, me gustaría ser capaz de encontrar una respuesta aquí. ¡Gracias! rocas Stackoverflow!

¿Fue útil?

Solución

No se puede crear una instancia de una interfaz. Puede, sin embargo, crear una clase de fábrica:

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

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

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

Como alternativa, el cambio SetCreator para aceptar una función que devuelve un IURLFetcher:

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

Otros consejos

Prueba esto:

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

No se puede usar clases internas anónimas en AS3. Para casos especiales, como las devoluciones de llamada puede utilizar la función en lugar de clases internas anónimas.

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);
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top