JRubyで呼び出したJavaメソッドからの戻り値が、Rubyのどの型に変換されるか調べた
Java戻り値 |
Ruby |
boolean |
true, false |
char |
Fixnum |
byte |
Fixnum |
short |
Fixnum |
int |
Fixnum |
long |
Fixnum |
float |
Float |
double |
Float |
String |
String |
BigInteger |
Bignum |
Wrapperクラスのときも型変換はされた。
Collectionや配列は変換されなかった。
Javaのメソッドで戻り値型をNumberにしたところ、実際の中身の型で変換された。
Rubyのオブジェクトを返したい場合
JavaからRubyのArrayを返したい場合はorg.jruby.RubyArray#newArray(org.jruby.Ruby)を使用できる
public List getList(org.jruby.Ruby runtime){
List list = org.jruby.RubyArray.newArray(runtime);
・・・
ただしArrayを作成するためにはRubyランタイムを渡す必要がある。
(このメソッドをJRubyから使用する場合はobj.getList(JRuby.runtime)のようにする)