开发者

Proper jruby syntax for requiring java and including java classes

I can't seem to find what the current syntax for using java classes in Jruby is. This link text article lists:

include Java
include 'java'
require 'java'

As valid options, though it says the last option is pre 1.0 and doesn't work.

The Jruby Wiki however says to use require 'java'

And for including classes I've seen

MyClass = Java::some.package.MyClass
include_class Java::some.package.MyClass
include_class 'some.package.MyClass'
java_import Java::some.package.MyClass

Is there one preferred method?

Cu开发者_开发百科rrently I'm getting some "redefining X" message as I have a few java classes named the same as my ruby class. What's the best method for keeping the java namespace so I don't get these, and are there any issues (aside from the obvious Java class taking precedent to the ruby class) with this redefinition if I never use the two ruby/java classes in the same file?


Personally, I always use require 'java'

If you're having namespace clashes, I'd suggest not including or importing, but specifying fully qualified class names, e.g.

my_instance = Java::JavaUtil::Date.new

...where Java:: is top level module for all java classes, JavaUtil:: is the full package name for the class I want, in proper-case and jammed together, and Date is the actual class name.


I prefer

require 'java'
java_import java.lang.System

I think the choice of require 'java' is not that import and is just personal preference. On the other hand, JRubyWiki says java_import is preferred, due to this bug report.

For the name conflict between Java and JRuby classes. For the sake of code readability or for maintenance purpose, I'd suggest to avoid using the same Name for 2 different classes, unless you mean to re-open it.

Update: are you sure the error 'Redefine X ...' is caused by having the same name for your Java and JRuby class? I usually get this error because I java_import the same Java class multiple times (sometimes in different places, sometime I load the same file multiple times).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜