生成されたBeanを調べる


では、このBeanAlter.addAccesorを利用してBeanクラスを修正してみましょう。まず、これを利用するプログラムのmainメソッドを用意します。

※JassistSample mainの修正

public static void main(String[] args) {
 
 BeanAlter.addAccesor(args[0]);
 
 printTestBean();
}


他のメソッド類は省略してあります。ここでは、実行時の引数であるargs[0]のテキストをそのままaddAccesorの引数に渡すようにしてあります。実行時に"jp.tuyano.jasample.TestBean"といったテキストを引数に渡すようにしておけば、TestBeanの修正を行なうことができる、というわけです。

続いて、BeanのサンプルであるTestBeanを修正しておきましょう。サンプルとして、以下のようにしておけばよいでしょう。

※テスト用のTestBean.java

package jp.tuyano.jasample;

public class TestBean {
 
 public String samplestr;
 public int sampleint;
 public int test;
 
}


このTestBeanには、ごらんのように3つのpublicフィールドを用意しておきました。これをコンパイルしてTestBean.classを作成し、mainメソッドに引数を渡して実行させてみます。そして、作成されたTestBean.classを、またコンパイルしてどうなっているか調べてみることにしましょう。

※TestBean.classのデコンパイル結果

package jp.tuyano.jasample;

public class TestBean
{

 private String samplestr;
 private int sampleint;
 private int test;

 public TestBean()
 {
 }

 public String getSamplestr()
 {
  return samplestr;
 }

 public void setSamplestr(String s)
 {
  samplestr = s;
 }

 public int getSampleint()
 {
  return sampleint;
 }

 public void setSampleint(int i)
 {
  sampleint = i;
 }

 public int getTest()
 {
  return test;
 }

 public void setTest(int i)
 {
  test = i;
 }
}


ごらんのように、3つのフィールドはすべてprivate化され、それらにアクセスするためのアクセサがきれいに準備されます。最初に用意しておいたTestBean.javaのソースコードを比べてみてください。publicフィールドを書いておくだけで、これらの処理が自動追加されるなんて、かなり便利だと思いませんか?

Javassistを使えば、このように既に完成したクラスファイルを自由に書き換えることができるようになります。ある意味、究極のツールといえるのではないでしょうか。


■All Aboutで「毎月の家計」について、アンケートを実施中です!
回答いただいた内容をAll About記事企画の参考にさせていただきます
※毎月5名の方にAmazonギフト券1000円分をプレゼント

「毎月の家計についてのアンケート」に回答する


※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。