使用Java类时的JRuby限制

使用Java类时的JRuby限制,java,ruby,jruby,Java,Ruby,Jruby,就我所了解的JRuby而言,在JRuby代码中使用Java类是完全可能的,反之亦然,然而,我仍然不了解一些事情 JRuby可以使用Java注释吗 可以在Java类上使用JRuby的反射吗 可以在JRuby类上使用Java反射吗 我在JRuby中有可执行类吗 可以在JRuby脚本中重新定义Java类吗?(与我在C Ruby中重新定义整数的方法相同) 是否存在任何其他限制,阻止将JRuby用作任何Java应用程序的一部分 JRuby可以使用Java注释吗 不,Ruby没有注释。不过,编译器允许

就我所了解的JRuby而言,在JRuby代码中使用Java类是完全可能的,反之亦然,然而,我仍然不了解一些事情

  • JRuby可以使用Java注释吗
  • 可以在Java类上使用JRuby的反射吗
  • 可以在JRuby类上使用Java反射吗
  • 我在JRuby中有可执行类吗
  • 可以在JRuby脚本中重新定义Java类吗?(与我在C Ruby中重新定义整数的方法相同)
  • 是否存在任何其他限制,阻止将JRuby用作任何Java应用程序的一部分
      • JRuby可以使用Java注释吗
      不,Ruby没有注释。不过,编译器允许您添加编译到类文件时使用的注释

      • 可以在Java类上使用JRuby的反射吗
      是的:

      • 可以在JRuby类上使用Java反射吗
      当使用BSF或JSR223嵌入JRuby时?只有在这些技术允许的范围内。当使用ruby2java时?对它生成普通的Java.class文件

      • 我在JRuby中有可执行类吗
      我不太清楚你在问什么

      • 可以在JRuby脚本中重新定义Java类吗?(与我在C Ruby中重新定义整数的方法相同)
      是的,您可以在JRuby中使用monkey补丁,但是从Java端看不到这些更改,只有JRuby:

      import java.util.Vector
      class Vector
        def foo
          "foo!"
        end
      end
      v = java.util.Vector.new
      v.foo                       #  => "foo!"
      
      • 是否存在任何其他限制,阻止将JRuby用作任何Java应用程序的一部分

      当使用JRuby中的Java时,会有很多问题。ruby2java仍处于初级阶段,我不确定它是否已经为生产环境做好了准备。除此之外,重点是使用BSF和JSR223编写脚本,这可能适合您的目的,也可能不适合您的目的。

      JRuby 1.4确实包含一些对Ruby类注释的支持,但仅在运行时提供。查看使用新的运行时类生成与基于注释的框架进行互操作的示例


      Pesto的其余答案基本正确。

      JRuby现在确实支持通过注释,但它有一些限制。到目前为止,在我的经验中,一个严重的问题是它需要使用
      been\ujava(未记录)。这会阻止您在Ruby类上使用注释,这些Ruby类是由于问题而从Java超类子类化的


      这在web编程中是一个相当大的问题,许多框架使用注释作为路由系统。这实际上意味着您无法为控制器创建父类。

      可执行类意味着类定义是可执行代码,例如,在这种情况下,是的,JRuby类与Ruby类完全相同。应该注意的是,
      java\u注释“TheAnnotation”调用支持注释
      
      import java.util.Vector
      class Vector
        def foo
          "foo!"
        end
      end
      v = java.util.Vector.new
      v.foo                       #  => "foo!"