Actionscript 3 如何将代理强制转换到接口?(或告诉代理实现接口)

Actionscript 3 如何将代理强制转换到接口?(或告诉代理实现接口),actionscript-3,actionscript,Actionscript 3,Actionscript,我需要ActionScript代理可以强制转换到特定的接口 下面是一个没有接口的示例: public dynamic class Tracer extends Proxy { flash_proxy override function callProperty(method:*, ... args):* { trace(method + " " + args) } } var t:* = new Tracer() t.sayHello("123") // pri

我需要ActionScript代理可以强制转换到特定的接口

下面是一个没有接口的示例:

public dynamic class Tracer extends Proxy {
    flash_proxy override function callProperty(method:*, ... args):* {
        trace(method + " " + args)
    }
}

var t:* = new Tracer()
t.sayHello("123") // prints: "sayHello [123]"
现在我需要“t”是健谈型(别问为什么,我只是喜欢静态输入):

问题是:如何投下代理?

例如,Java的解决方案是在创建新代理时传递接口列表


ActionScript 3真的有可能吗?

声明
公共动态类Tracer extends Proxy implements Talker
以及所有需要定义的方法怎么样?

不幸的是,这在普通ActionScript中是不可能的。但我想你可以用这个

那么代理的整个概念就变得毫无用处了——需要一个代理来摆脱方法,而不是实现它们。@oshyshko-那么为什么需要一个接口呢?我唯一的想法是关于代码完成,但是如果你需要的话,你必须定义方法(最好的方法是创建一个扩展
Proxy
的类,并将其封装到一个实现接口的类中)。顺便说一句,还有一种方法我永远不会为接口定义方法——它们将由代理实现。我所需要的只是一种方法,将我的接口(Talker)传递给Proxy,并获取一个实例(由Proxy创建),该实例可以投射回Talker(应该实现接口)并用作任何常规实现,但由Proxy而不是程序员生成。现在它不能被铸造,它只是(动态)对象。@oshyshko-你试过
var t:Tracer=newtracer()吗;(作为说话者)说你好(“123”)?顺便说一下,我不确定一个没有定义所有接口方法的类是否可以实现一个接口方法。我相信你是对的,如果我没有弄错的话,这个场景就显示在上面提到的页面上。看起来它可以做很多有趣的类/接口操作。好发现!
public interface Talker {
    function sayHello(s:String):void
}

var t:Talker = new Tracer() // throws class cast exception
t.sayHello("123")