Actionscript中的内联接口实现

时间:2009-08-14 19:02:32

标签: actionscript interface implementation inline

在Actionscript中是否可以这样?

爪哇:

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

的ActionScript:

?

我一直在想这个,并且无法找到任何表明它可能的东西。如果 可能,我可以在这里找到答案。谢谢! Stackoverflow晃动!

3 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

您无法创建界面实例。但是,您可以创建工厂类:

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

答案 2 :(得分:0)

您不能在AS3中使用匿名内部类。 对于像回调这样的特殊情况,您可以使用Function而不是匿名内部类。

爪哇:

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