著作一覧 |
実はドキュメントは、ext/rjb.cは当然として、test/test.rbにあったりして。
たとえば、importしたクラス(メタデータ)のクラス名は次のように参照できる。
def test_metaclass cls = import('java.lang.Class') assert_equal('java.lang.Class', cls._classname) #これはrjbのメソッド(_で始まってるのが特徴) assert_equal('java.lang.Class', cls.getName) #これはJavaのClass#getName assert_equal(17, cls.getModifiers) end
インスタンスが属するクラスの名称も同じ_classnameメソッドが利用できる。
def test_scalar cls = import('java.lang.String') #Stringのクラス(メタデータ)を移入 assert_equal('java.lang.Class', cls._classname) # そりゃそうだ。 assert_equal('class java.lang.String', cls.toString) str = cls.new #Stringのインスタンスを生成 assert_equal('java.lang.String', str._classname) #インスタンスが属するクラス名も_classnameが利用できる
一応、ほかのやつで試してみた。
require 'rjb' o = Rjb::import('java.lang.System').out o.println('jarh') p o._classname
実行すると
C:\temp>ruby out.rb jarh "java.io.PrintStream"
と、outのクラス名が出力されることが確認できる。
ジェズイットを見習え |
質問こちらでよろしいでしょうか・・・<br>大量にインスタンスを作っていたらOut of Memoryが出てしまいました。<br>だんだん遅くなってから出たので、ヒープというよりも<br>GC時にパーマネント領域が不足した可能性もあります。<br>VMを作るときにメモリオプションを指定する方法がありましたらお教え下さいませ。どうぞよろしくお願いいたします。
気づかなくてすみません。<br>rjbにオブジェクトをちゃんと解放してないバグがあるのかも知れません。<br>VMのオプションについては、現時点では外しているので実装します。<br>今週末か来週頭ということで、しばしお待ちを。
ありがとうございます。<br>どうぞよろしくお願いいたします。