在我的GWT项目中,我确实需要在多个叠加层(JavaScriptObject)之间实现相同的接口(interface)。

根据文档:

从GWT 2.0开始,允许JavaScriptObject子类型实现接口(interface)。接口(interface)中定义的每个方法最多可以映射到JavaScriptObject子类型中声明的一个方法。实际上,这意味着只有一个JavaScriptObject类型可以实现任何给定的接口(interface),但是任何数量的非JavaScriptObject类型也可以实现该接口(interface)。

因此,我想将我的JavaScriptObject“投射”到一个真正的Java对象中。它使我减少了大量重复代码。

可能吗 ?
谢谢。

最佳答案

如何创建包装JSON而不是继承JSON的类?

public class PersonJso extends JavaScriptObject{
    protected PersonJso() {}
    public static native PersonJso create(String name) /*-{
        return {name : name};
    }-*/;
    public final native String getName() /*-{
        return this.name;
    }-*/;
}

public class AnimalJso extends JavaScriptObject{
    protected AnimalJso() {}
    public static native PersonJso create(String name) /*-{
        return {name : name};
    }-*/;
    public final native String getName() /*-{
        return this.name;
    }-*/;
}
public class AnimalWrapper implements hasName{
    AnimalJso jso;
    public AnimalWrapper(){}
    public AnimalWrapper(AnimalJso jso){
        this.jso = jso;
    }
    @Override
    public String getName() {
        return jso.getName();
    }
}
public class PersonWrapper implements hasName{
    PersonJso jso;
    public PersonWrapper(){}
    public PersonWrapper(PersonJso jso){
        this.jso = jso;
    }
    @Override
    public String getName() {
        return jso.getName();
    }
}

10-07 14:13