![](/img/trans.png)
[英]In Jython, can I make an inline anonymous class that implements a Java interface?
[英]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.