簡體   English   中英

如何實例化在Java中實現Java接口的JRuby類

[英]How can I instantiate a JRuby class that implements a Java interface in Java

有一個Java接口Job:

interface Job{
...
}

和一個實現它的JRuby類SimpleJob:

class SimpleJob
require org.quartz.Job
...
end

我需要(從Java類)使用javax.script.ScriptEngine類實例化SimpleJob類,並獲取其類對象。 我該怎么做呢?

我不確定是否可以恢復原狀。 為什么不創建自己想要執行的腳本,然后使用SciptEngine執行腳本呢? 像這樣

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

“最簡單”的方法是進行評估:

IRubyObject instance = (IRubyObject) rubyEngine.eval("SimpleJob.new");

訪問該類並手動“調用”它:

RubyClass klass = (RubyClass) rubyEngine.eval("SimpleJob");
klass.callMethod("new");

注意:也可以使用JRuby的“直接” API實現相同的目的:

runtime.getClass("SimpleJob").callMethod("new");

假設您獲得了org.jruby.Ruby 運行時實例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM