Javaプログラミング/Javaプログラミング関連情報

クラスファイルを強制変換する(5ページ目)

Javassistで、クラスファイル変換を使ってクラスの中身を変えてしまいましょう。

執筆者:掌田 津耶乃

生成された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を使えば、このように既に完成したクラスファイルを自由に書き換えることができるようになります。ある意味、究極のツールといえるのではないでしょうか。
【編集部おすすめの購入サイト】
Amazonで Java 関連の書籍をチェック!楽天市場で Java 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます