首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实例化在Java中实现Java接口的JRuby类

如何实例化在Java中实现Java接口的JRuby类
EN

Stack Overflow用户
提问于 2014-09-12 08:01:59
回答 2查看 200关注 0票数 0

有一个Java接口作业:

代码语言:javascript
运行
复制
interface Job{
...
}

以及实现它的JRuby类SimpleJob:

代码语言:javascript
运行
复制
class SimpleJob
require org.quartz.Job
...
end

我需要(从Java类)使用SimpleJob类实例化javax.script.ScriptEngine类,并获取它的类对象。我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-12 09:24:47

“最简单”的方法是做一个评估:

代码语言:javascript
运行
复制
IRubyObject instance = (IRubyObject) rubyEngine.eval("SimpleJob.new");

要访问类并手动“调用”它:

代码语言:javascript
运行
复制
RubyClass klass = (RubyClass) rubyEngine.eval("SimpleJob");
klass.callMethod("new");

注意:使用JRuby的“直接”API也可以实现相同的目标:

代码语言:javascript
运行
复制
runtime.getClass("SimpleJob").callMethod("new");

假设您获得了org.jruby.Ruby 运行时实例

票数 0
EN

Stack Overflow用户

发布于 2014-09-12 08:18:07

我不确定你能不能夸大一下。为什么不创建一个脚本来完成您想要的,然后使用SciptEngine来执行脚本呢?就像这样

代码语言:javascript
运行
复制
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
try {  
  FileReader f = new FileReader("yourscript.rb");
  engine.eval(f);
} catch (javax.script.ScriptException e) {
    ...
} 

也来看看这个,也许它会帮你https://github.com/jruby/jruby/wiki/DirectJRubyEmbedding

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25803513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档