Вопрос

Возможно ли что-то подобное в Actionscript?

Java - Язык:

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

Actionscript ( Сценарий действия ):

?

Я задавался вопросом об этом и не смог найти ничего, что указывало бы на то, что это возможно.Прикинул , если это был возможно, я смог бы найти ответ здесь.Спасибо!Камни стекового потока!

Это было полезно?

Решение

Вы не можете создать экземпляр интерфейса.Однако вы можете создать фабричный класс:

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

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

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

В качестве альтернативы измените setCreator, чтобы он принимал функцию, которая возвращает IURLFetcher:

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

Другие советы

Попробуй это:

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

Вы не можете использовать анонимные внутренние классы в 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);
     }
}

АС3:

class Service {
     public function process(callback:Function):void;
}
...
myService.process(function(info:String):void {
     trace(info);
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top