从 Ruby 代码获取 JRuby-内部 Java 对象

Getting JRuby-internal Java object from Ruby code

我想知道是否可以在 Ruby 代码中获取 JRuby-内部 Java 对象(例如 org.jruby.RubyStringorg.jruby.RubyTime),以及从 Ruby 调用他们的 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();
}

啊,我在试错中找到了答案。

以下作品。

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