我似乎无法找到在Jruby中使用java类的当前语法。 这篇link text文章列出了:
include Java
include 'java'
require 'java'
作为有效选项,虽然它说最后一个选项是1.0之前的版本但不起作用
但Jruby Wiki表示使用require 'java'
包括我见过的课程
MyClass = Java::some.package.MyClass
include_class Java::some.package.MyClass
include_class 'some.package.MyClass'
java_import Java::some.package.MyClass
有一种首选方法吗?
目前我正在收到一些“重新定义X”消息,因为我有一些与我的ruby类相同的java类。保留java命名空间的最佳方法是什么,所以我没有得到这些,如果我从未使用过两个ruby / java类,那么这个重新定义是否存在任何问题(除了明显的Java类前面的ruby类)同一个文件?
答案 0 :(得分:1)
就个人而言,我总是使用require 'java'
如果您遇到命名空间冲突,我建议不要包含或导入,而是指定完全限定的类名,例如
my_instance = Java::JavaUtil::Date.new
...其中Java::
是所有java类的顶级模块,JavaUtil::
是我想要的类的完整包名,在适当的情况下和卡在一起,{{1}是实际的类名。
答案 1 :(得分:1)
我更喜欢
require 'java'
java_import java.lang.System
我认为require 'java'
的选择不是那种重要的,只是个人偏好。另一方面,由于JRubyWiki,this bug report表示首选java_import
。
Java和JRuby类之间的名称冲突。为了代码可读性或维护目的,我建议避免对2个不同的类使用相同的名称,除非您打算重新打开它。
更新:您确定错误“重新定义X ...”是由Java和JRuby类的名称相同引起的吗?我经常得到这个错误,因为我java_import
多次使用相同的Java类(有时在不同的地方,有时我多次加载同一个文件)。