2017-10-19 46 views
0

我想知道是否可以在Ruby代碼中獲得JRuby內部的Java對象(例如org.jruby.RubyString,org.jruby.RubyTime),並從Ruby中調用它們的Java方法。有誰知道該怎麼做?從Ruby代碼獲取JRuby內部的Java對象

str = "foobar" 
rubystring_str = str.toSomethingConversion # <== What I want 

# http://jruby.org/apidocs/org/jruby/RubyString.html#getEncoding() 
rubystring_str.getEncoding() # Java::org.jcodings.Encoding 
# http://jruby.org/apidocs/org/jruby/RubyString.html#getBytes() 
rubystring_str.getBytes() # [Java::byte] 

time = Time.now 
rubytime_time = time.toSomethingConversion # <== What I want 
# http://jruby.org/apidocs/org/jruby/RubyTime.html#getDateTime() 
rubytime_time.getDateTime() # Java::org.joda.time.DateTime 

我知道我可以這樣做,使用Java代碼如下,但在這裏,我想純粹用Ruby來做。

public org.joda.time.DateTime getJodaDateTime(RubyTime rubytime) { 
    return rubytime.getDateTime(); 
} 

回答

0

啊,我在我的嘗試和錯誤中找到了答案。

以下的作品。

"foobar".to_java(Java::org.jruby.RubyString).getEncoding() 
Time.now.to_java(Java::org.jruby.RubyTime).getDateTime()