Javaのプログラムの変更は容易にはできないんですが、JRubyをしこんでおくと、ささっとプログラムを書き換えて実行させることができます。
そのときに非常に協力なのが、クラスの内部のデータへの動的アクセス
通常のJavaならreflectのクラスを利用すると、プライベートデータにアクセスしたり自由自在にできます。
同じことがJRubyでもできます。
とはいえJavaと同じ方法でできるわけではないです。
というわけでやり方。
static重視
clazz = (com.ttProject.library.Myclass).java_class;
puts(clazz.methods);
method = clazz.declared_method("myMethod");
constructor = clazz.declared_constructor();
instance = constructor.new_instance();
instance = constructor.new_instance("引数1", "引数2" ...);
puts(clazz.fields);
val = clazz.declared_field("variable");
puts(val.static_value);
val = clazz.declared_field("variable");
val.set_value([クラスオブジェクト], [設定する値]);
シングルトンの場合は、適当なものを何かクラスオブジェクトとして設置しておけば問題ないみたい。
とりあえず今わかっているのは、このくらいです。
最終更新:2011年02月26日 21:12