Actionscript中的内联接口实现

Actionscript中的内联接口实现,actionscript,interface,implementation,inline,Actionscript,Interface,Implementation,Inline,在Actionscript中是否可能出现类似的情况 爪哇: 动作脚本: ? 我一直在想这件事,但找不到任何迹象表明这是可能的。如果可能的话,我可以在这里找到答案。谢谢!堆积如山的岩石 试试这个: URLFetcherFactory.setCreator( new IURLFetcherCreator() { public function create():IURLFetcher { return new URLFetc

在Actionscript中是否可能出现类似的情况

爪哇:

动作脚本:

?
我一直在想这件事,但找不到任何迹象表明这是可能的。如果可能的话,我可以在这里找到答案。谢谢!堆积如山的岩石

试试这个:

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

不能创建接口的实例。但是,您可以创建factory类:

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();
    }
);

在AS3中不能使用匿名内部类。 对于回调之类的特殊情况,可以使用函数而不是匿名内部类

爪哇:

AS3:


确切地!我最喜欢第二个实现,尽管您无法检查函数返回的类型。这更符合我的想法。谢谢!是的,很遗憾AS3不支持强类型委托。兰博达斯会更好。
URLFetcherFactory.setCreator(
    function() : IURLFetcher {
        return new URLFetcher();
    }
);
interface Callback {
     void done(String info);
}
class Service {
     void process(Callback callback);
}
...
myService.process(new Callback() {
     void done(String info) {
          // trace(info);
     }
}
class Service {
     public function process(callback:Function):void;
}
...
myService.process(function(info:String):void {
     trace(info);
});