2008年10月3日金曜日

JRubyでjava.util.Dateクラスを利用する

JRubyでは「java.util.Date」クラスはうまく相互変換してくれない場合がある。

例えば
現在の日時を取得したい場合に
today = Time.nowでrubyのDateクラスを取得する。

そして

public void sample_method(Date prm)

みたいなjavaの「java.util.Date」クラスを引数とするメソッドに
todayを引き渡す場合はうまくいくが

todayをハッシュマップ等でラップして引数として渡した場合はうまく変換してくれない。

public void sample_method(Map prm2)

param = {}
param["today_1"] = today

これはJRuby側で「java.util.Date」をみつけられないらしくJRubyオブジェクトのままで
わたしてしまうのが原因ぽい。

なのでtodayを作るときにrubyのオブジェクトとしてではなく以下のように最初から「java.util.Date」として作成してあげればうまくいく。

today = java.util.Date

以上

0 件のコメント:

コメントを投稿