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