Pergunta

É algo como isto possível em Actionscript?

Java:

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

Actionscript:

?

Eu estive pensando sobre isso e têm sido incapazes de encontrar qualquer coisa que indica que é possível. Pensei que se ele foi que possível, eu seria capaz de encontrar uma resposta aqui. Obrigado! rochas stackoverflow!

Foi útil?

Solução

Você não pode criar uma instância de um interface. Você pode, no entanto, criar uma classe 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, a mudança setCreator a aceitar uma função que retorna um IURLFetcher:

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

Outras dicas

Tente isto:

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

Você não pode usar classes internas anônimas em AS3. Para casos especiais, como chamadas de retorno que você pode usar a função em vez de classes 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top