トップ «前の日記(2005-04-04) 最新 次の日記(2005-04-06)» 編集

日々の破片

著作一覧

2005-04-05

_ rjb

実はドキュメントは、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のクラス名が出力されることが確認できる。

本日のツッコミ(全3件) [ツッコミを入れる]
_ ryugate (2005-04-18 23:17)

質問こちらでよろしいでしょうか・・・<br>大量にインスタンスを作っていたらOut of Memoryが出てしまいました。<br>だんだん遅くなってから出たので、ヒープというよりも<br>GC時にパーマネント領域が不足した可能性もあります。<br>VMを作るときにメモリオプションを指定する方法がありましたらお教え下さいませ。どうぞよろしくお願いいたします。

_ arton (2005-04-19 10:50)

気づかなくてすみません。<br>rjbにオブジェクトをちゃんと解放してないバグがあるのかも知れません。<br>VMのオプションについては、現時点では外しているので実装します。<br>今週末か来週頭ということで、しばしお待ちを。

_ ryugate (2005-04-19 13:08)

ありがとうございます。<br>どうぞよろしくお願いいたします。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え