6

このリンク をたどっている間、javascriptでディープクローンを作成する方法

一般的なクローンメソッドに出くわしました(受け入れられた回答で)。JavaScriptで直接実行してみましたが、実行されて完璧な出力が得られました。

そのコードをネイティブ タグに入れ、GWT でオブジェクトのクローンを作成しようとしています。

クローンしようとしている私のクラスは

    private class Container
    {
        Integer i = 5;
    }

私がそれをしようとすると、同じオブジェクトが返されます。誰でも助けてもらえますか?わからないことがあれば何でも聞いてください。ありがとうございます。

4

2 に答える 2

2

ジョナサンは正しいです: 方法 (そして GWT で唯一の方法) はhttps://code.google.com/p/google-web-toolkit/wiki/AutoBeanを使用することです

これはぎこちないかもしれませんが、多くの概念がそれに関連しているため、完全に機能します (RequestFactory の EntityProxy もそのメカニズムに依存しており、GWT の将来です)。

深い json 永続性は、自動 Bean でも機能します。

あなたがしなければならない唯一のことは、あなたのクラスを説明するインターフェースを作成することです(そしてそれをあなたのクラスに実装します):

public interface ContainerBean {
  Integer getI();
  void setI(Integer i);
}

次に、ファクトリ インターフェイスを作成します

interface MyFactory extends AutoBeanFactory {
  // Factory method for a simple AutoBean
  AutoBean<ContainerBean> container();

  // Factory method for a non-simple type or to wrap an existing instance
  AutoBean<ContainerBean> container(ContainerBean toWrap);
}

これで、オブジェクトをラップしてクローンを作成できます (json 以降)

clone() AutoBean とそれに格納されているプロパティ値を複製できます。clone() メソッドには、ディープ コピーまたはシャロー コピーをトリガーするブール値パラメーターがあります。AutoBean に関連付けられたタグ値は複製されません。デリゲート オブジェクトをラップする AutoBeans は複製できません。

https://code.google.com/p/google-web-toolkit/wiki/AutoBean#clone()

したがって、代わりにこのメソッドを使用してください: https://code.google.com/p/google-web-toolkit/wiki/AutoBean#AutoBeanCodex

于 2013-08-11T14:12:25.440 に答える
1

これを実現できる方法の 1 つは、AutoBeansを使用することです。

この方法の唯一の秘訣は、AutoBeanFactoryすべてのクラスを作成するために を使用する必要があることです。

次に、autobean を にエンコードしSplittable、その結果を使用して新しい autobean インスタンスにデコードできます。

于 2013-01-11T20:46:02.110 に答える