如何将代理转换为接口? (或告诉代理实现接口)

时间:2011-01-30 05:07:12

标签: actionscript-3 actionscript

我需要ActionScript Proxy可以转换为特定的接口。

以下是没有界面的示例:

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”成为Talker类型(不要问为什么,我只是喜欢静态打字):

public interface Talker {
    function sayHello(s:String):void
}

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

问题是:如何投射代理?

例如,Java的解决方案是在创建新代理时传递接口列表http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html

使用ActionScript 3真的可以吗?

2 个答案:

答案 0 :(得分:2)

遗憾的是,在简单的动作中,这是不可能的。但我认为你可以用as commons bytecode API来做到这一点。

答案 1 :(得分:0)

用所有需要定义的方法声明public dynamic class Tracer extends Proxy implements Talker怎么办?