gpt4 book ai didi

java - 如何从 JRuby 中的 ScriptingContainer 执行的 ruby​​ 脚本初始化 Java 对象?

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:05 25 4
gpt4 key购买 nike

执行 Ruby 脚本的 Java 代码:

ruby = new ScriptingContainer(LocalVariableBehavior.PERSISTENT);
ruby.put("MyJavaClass", MyJavaClass.class);
ruby.runScriptlet(readFile("Test.rb"));

MyJavaClass 代码:

public class MyJavaClass {
public MyJavaClass(String name) {
System.out.println("I got a name: " + name);
}
}

Test.rb 中的 Ruby 代码:

someInstance = MyJavaClass.new("Joe")

这就是我尝试使用 JRuby 在 Ruby 脚本中初始化 Java 对象的方法。它没有用。

最佳答案

首先,请注意,通过将 MyJavaClass.class 作为 ruby​​ 变量,可用的 Java Class 对象可用于您的 JRuby 脚本。以下作品:

java_class = MyJavaClass.getDeclaredConstructor(java.lang.String.java_class)
someInstance = java_class.new_instance("Joe")

它使用 Java 反射来实例化 MyJavaClass

然而,这可以更简单地完成,而无需将类添加为 ruby​​ var。首先,确保 MyJavaClass 文件夹的路径在类路径 ( or ruby $LOAD_PATH ) 上。然后,在Test.rb中调用类如下。

someInstance = Java::MyJavaClass.new("joe")

 java_import 'MyJavaClass'
someInstance = MyJavaClass.new("Joe")

关于java - 如何从 JRuby 中的 ScriptingContainer 执行的 ruby​​ 脚本初始化 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14189641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com