Реализация встроенного интерфейса в Actionscript
-
16-09-2019 - |
Вопрос
Возможно ли что-то подобное в 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);
});
Не связан с StackOverflow