タグ

JAVAとserializeに関するt_43zのブックマーク (6)

  • 循環参照問題のよりエレガントな解法 - 矢野勉のはてな日記

    Java, Wicketkoichikさんからトラックバックもらいました。次期 S2Wicket 仕様断念の原因となった動的オブジェクトの循環参照問題をおいらもみんなのために解いたった!?なるほど!これはエレガントですね。 readObject(), writeObject()を使う方法を考えてはいたのだけど、最終的にreadResolve()で元オブジェクト復元しないといけないから、readResolve()使わないと解決できないよなあ、と思って全部readResolve()/writeReplace()でやったのですけども、なるほどなるほど、readResolve()前にreadObject()でシリアライズ・オブジェクトがロードされるので、readObject()途中で復元オブジェクトを確定しちゃって、readResolve()ではそれを返すわけだ。 ポイントはシリアライズ・オブジェ

  • 次期S2Wicket仕様断念の原因となった動的オブジェクトの循環参照問題をぼくがみんなのために解いたった! - 矢野勉のはてな日記

    Java, Wicket下記の記事について、よりエレガントな解法がkoichikさんから発表されました。詳しくは翌日のエントリをどうぞ。S2Wicket開発者よういちろうさんの下記記事を参照。新S2Wicket仕様,断念上の記事が公開された時に、私、コメントをつけたんですよ。こんばんは。是非一度問題を追いかけてみたいので、テストコードを公開してみませんか? 誰かが問題を解決してくれるかも....そうしたらエラーを再現するための参照コードが公開されたんですが、今の今まで余裕なくて放置してましたすみません。動的プロキシが循環参照していた際のシリアライズ問題デバッガで追いかけてみると原因はほぼすぐに分かりました。よういちろうさんの指摘通り、Javaのオブジェクトシリアリゼーションの仕様ですね、これは。注 - オブジェクトが完全に構築されるまでは readResolve メソッドはオブジェクトに呼

    t_43z
    t_43z 2007/07/19
    おー、素晴らしい。気になるのはパフォーマンスかなぁ。
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • TheServerSide | Your Java Community discussing server side development

    Pivoting your developer career into AI? Here's what to know Want to pivot your software development career and focus on AI? Here's how to pick from several paths, hone specific skills and evaluate potential AI roles and organizations. Jira story vs. epic: What's the difference? Anyone who has opened a Scrum board in Jira knows projects are organized into stories and epics. But what exactly is the

  • 動的プロキシをシリアライズする具体的方法

    Javassistを使った動的プロキシの作成」エントリと「 替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()」エントリを組み合わせると,実行時にその場で作った動的プロキシクラスを元にnewしたインスタンスをシリアライズし,異なるJavaVMプロセスにてデシリアライズできるようになる。今回はその具体的な方法を紹介しよう。 まずは,動的プロキシの対象となる抽象クラスを以下とする。これは「 Javassistを使った動的プロキシの作成」で取り上げたものと同一である。 package test; public abstract class Component { private int cnt; public abstract void onClick(); public void output() { System.out.println(cnt

  • 替わりのオブジェクトをシリアライズするwriteReplace()/readResolve()

    今回は「 動的プロキシとシリアライズ」エントリで取り上げた通り,writeReplace()メソッドとreadResolve()メソッドの使い方について紹介してみようと思う。 あるオブジェクトをシリアライズしたくなったとする。しかし,時として,そのオブジェクトをそのままシリアライズすることができない理由が出てきたりする。そのままシリアライズしてしまうとサイズが非常に大きくなってしまう,などがすぐに思い付く代表例だろう。その場合,シリアライズしたい情報を自分で決定し,さらに情報を加工するなどして,自前の形で永続化を行いたくなる。 そのようなニーズに応えるのが,writeReplace()/readResolve()メソッドの機構である。これは,シリアライズ時およびデシリアライズ時に自動的に呼び出されるメソッドであり,これらのメソッドを使うことによって,シリアライズの際に対象のオブジェクトその

  • 1