【レポート】
The Objenesis Teamは19日(米国時間)、Objenesisの最新版となる「Objenesis 1.0」を発表した。Objenesisはインスタンスを生成することを目的として開発されたJavaライブラリ。小さなライブラリだが、なかなか興味深いので紹介しておきたい。
Javaにおいて動的にクラスをインスタンス化する方法として、Class.newInstance()を使うことが挙げられる。しかしこの方法だと、コンストラクタの状況によってはインスタンス化できないこともある。たとえばコンストラクタが引数を必要とする場合、コンストラクタがなんらかの影響を及ぼす場合、コンストラクタが例外を生成する場合などである。結果的にクラスに対してデフォルトコンストラクタを用意するように制限が課せられることが多いわけだが、Objenesisはインスタンス化においてコンストラクタをバイパスすることでこれらの制限を回避することを目的としている。
コンストラクタをコールせずにインスタンス化を実施する必要とは、たとえばシリアライゼーション/リモートおよびパーシスタンスなどを実施する場合に要求される。シリアライゼーションやパーシスタンスではメソッドをコールせずに状況を復帰させる必要がある。ほかにもプロキシやAOPライブラリ/モックオブジェクトではスーパークラスのコンストラクタに関与しないようにクラスをインスタンス化する必要があるし、コンテナフレームワークなどでも同機能は必要になってくる。
Objenesisではオブジェクトの型、Java仮想マシンのバージョン、Java仮想マシンのベンダ、SecurityManagerの状況など、多くの状況を加味してインスタンス化を実行している。具体的にどのような方法で実施しているかは同プロジェクトのサイトに詳細な文章が用意されているので、興味がある方はご覧いただきたい。
Objenesisは他のライブラリに依存しておらず、ほかにも依存性を排除するように考慮されているため、既存のアプリケーションに簡単に組み込んで活用することができる。
執筆現在においてObjenesisがサポートしているJava仮想マシンはSun Microsystems Hotspot VM 1.3/1.4/1.5、GCJ 3.4.4 (Windows/Cygwinでの試験結果)、BEA JRockit 7.0 (1.3.1)/1.4.2/1.5とされている。これ以外のプラットフォームは動作試験を実施していないため、場合によってはこれ以外のプラットフォームでも動作する。
動的なインスタンス化について頭を悩ませてきたデベロッパはObjenesisを検討してみるといいだろう。ドキュメントもある程度充実しているため取り組みだすにあたってそれほど難しいことはないだろう。
| アジレント、ミリ波信号解析ソリューションを発表 [16:54 5/24] |
| NXP、独自のTrench 6テクノロジによる車載用パワーMOSFETファミリを発表 [16:52 5/24] |
| 産総研、光照射で損傷を自己修復できるゲル状スマートマテリアルを開発 [16:49 5/24] |
| アンテナ設置数が半分の33台に到達 - アルマ望遠鏡、2kmの干渉試験も成功 [16:45 5/24] |
| 人工知能実現へ一歩前進!? - NIMS、環境依存型「シナプス素子」を開発 [16:40 5/24] |
|
JR西日本が地震・津波対策に総額1,000億円、とくに紀勢本線の取り組み強化 [06:30 5/25] ライフ |
|
[爆生レッドカーペット]生放送舞台裏をネットで生配信 [06:00 5/25] エンタメ |
|
[安室奈美恵]自身初の全国5大ドームツアー開催へ ファン投票で楽曲決定 [04:00 5/25] ホビー |
|
[森高千里]デビュー25周年で“200曲”をセルフカバー YouTubeで公開 [04:00 5/25] ホビー |
|
人気アクションフィギュア『武装神姫』、TVアニメ化決定! 2012年秋放送予定 [03:06 5/25] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。