0

私はすべて実装するデータエンティティをたくさん持っていますEntity。ここで、これらのエンティティーのいくつかを JavaScript コードに公開したいと考えていますが、実装が 1 つのルールであるため、多数の JavaScriptObject サブクラスを作成することはできません。

だから、私はこの種のものを使用しています:

public class JsStandardScale3 implements StandardScale3 {

    private JavaScriptObject wrapped;

    public JsStandardScale3(JavaScriptObject wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public native Long getLicenseId() /*-{
        this.@com.activegrade.client.exported.JsStandardScale3::wrapped.getLicenseId();
    }-*/;

これはうまくいきます、それはただの大変な作業です。オーバーレイ タイプの構造は非常に優れています。助言がありますか?

4

1 に答える 1

2

すべての拡張機能が JSO の単一の「ルート」拡張機能からのものである限り、インターフェースの複数のサブクラスで JavaScriptObject を拡張できることが判明しました。

たとえば、Standard extends Entity と Course extends Entity という構造を持っています。私はできませんでした:

JsStandard extends JavaScriptObject...
JsCourse extends JavaScriptObject...

しかし、私はできる

JsEntity extends JavaScriptObject...
JsStandard extends JsEntity...
JsCourse extends JsEntity...

素晴らしい!

唯一の制限は、すべてのメソッドを final としてマークする必要があることです。これは、単純なオーバーレイ シナリオでは問題なく機能します。

于 2013-01-15T21:29:18.750 に答える