适用于需要java和包含java类的jruby语法

时间:2010-01-07 15:38:06

标签: syntax jruby

我似乎无法找到在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类)同一个文件?

2 个答案:

答案 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'的选择不是那种重要的,只是个人偏好。另一方面,由于JRubyWikithis bug report表示首选java_import

Java和JRuby类之间的名称冲突。为了代码可读性或维护目的,我建议避免对2个不同的类使用相同的名称,除非您打算重新打开它。

更新:您确定错误“重新定义X ...”是由Java和JRuby类的名称相同引起的吗?我经常得到这个错误,因为我java_import多次使用相同的Java类(有时在不同的地方,有时我多次加载同一个文件)。