【问题标题】:Proper jruby syntax for requiring java and including java classes需要 java 并包含 java 类的正确 jruby 语法
【发布时间】:2010-01-07 15:38:05
【问题描述】:

我似乎找不到在 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”消息,因为我有几个 java 类与我的 ruby​​ 类命名相同。保留 java 命名空间的最佳方法是什么,所以我没有得到这些,如果我从不使用两个 ruby​​/java 类,那么重新定义是否存在任何问题(除了明显的 Java 类先于 ruby​​ 类)同一个文件?

【问题讨论】:

    标签: syntax jruby


    【解决方案1】:

    就我个人而言,我总是使用require 'java'

    如果您遇到命名空间冲突,我建议不要包含或导入,而是指定完全限定的类名,例如

    my_instance = Java::JavaUtil::Date.new

    ...Java:: 是所有 java 类的顶级模块,JavaUtil:: 是我想要的类的完整包名,在适当的情况下并挤在一起,Date 是实际的类名.

    【讨论】:

      【解决方案2】:

      我更喜欢

      require 'java'
      java_import java.lang.System
      

      我认为require 'java' 的选择并不重要,只是个人喜好。另一方面,JRubyWiki 表示java_import 是首选,因为this bug report

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

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

      【讨论】:

      • 是的,它似乎发生了冲突。当我实例化一个包含一堆 Java 类的对象(仅一次)时,我收到了该消息。我有一个红宝石“供应商”类,我还包括一个带有 include_class 的“new.my_app.Supplier”java 类
      猜你喜欢
      • 1970-01-01
      • 2015-02-09
      • 2019-06-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多