java - 将类 org.jruby.RubyArray 的实例转换为类 java.util.ArrayList

标签 java ruby jruby

我是 Ruby & Jruby 新手。我想在java代码中测试jruby的一些东西

这是我的代码:

import java.util.ArrayList;
import java.util.HashMap;
import org.jruby.embed.LocalVariableBehavior;
import org.jruby.embed.ScriptingContainer;

public class Test {
    public static void main(String[] args){
        ScriptingContainer container = new ScriptingContainer(LocalVariableBehavior.PERSISTENT);
        Test t = new Test();
        LogStatBean bean = t.new LogStatBean();
        container.setHomeDirectory("classpath:/META-INF/jruby.home");
        container.put("bean", bean);
        container.runScriptlet("arr = [1, 2, 3, 4, 5, 6]");
        container.runScriptlet("puts arr");
        container.runScriptlet("bean.setOutput(arr) ");
        System.out.println(bean.getOutput());

    }
    public class LogStatBean {
        public ArrayList<HashMap<String, Object>> getOutput() {
            return output;
        }
        public void setOutput(ArrayList<HashMap<String, Object>> output) {
            this.output = output;
        }
        public ArrayList<HashMap<String, Object>> output;

    }
}

我无法在 jruby 中设置 ArrayList 类型的 java 局部变量,它会引发错误

TypeError: cannot convert instance of class org.jruby.RubyArray to class java.util.ArrayList
  (root) at <script>:1

我必须做什么?

最佳答案

Ruby 中的数组(通常)会转换为 Java 数组 - 因此,要么停止期待 ArrayList,要么自己在 Ruby 中进行转换...这段 Ruby 应该会有所帮助:

>> [1, 2, 3].class
=> Array
>> [1, 2, 3].to_java.java_class
=> class [Ljava.lang.Object;
>> [1, 2, 3].to_java('java.lang.Integer').java_class
=> class [Ljava.lang.Integer;
>> java.util.ArrayList.new [1, 2, 3]
=> #<Java::JavaUtil::ArrayList:0x1b802d73>
>> java.util.Arrays.asList([1, 2, 3].to_java)
=> #<Java::JavaUtil::Arrays::ArrayList:0x10478ebc>

关于java - 将类 org.jruby.RubyArray 的实例转换为类 java.util.ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592698/

相关文章:

ruby - 我可以覆盖 Ruby 中的系统时区吗?

Ruby Test :Unit, 如何知道测试套件中每个测试用例的失败/通过状态?

Java:当用户提供的名称按字母顺序排列时,仅打印第一个和最后一个

java - Log4j 单独的日志文件

java - 如何在 Java 中从 ArrayList 读取和写入文件

ruby-on-rails - 用户 has_many 关联不起作用(错误 :Could not find the association :user_categories in model Category)

java - 使用java和mysql数据库重命名重复文件

ruby-on-rails - 无方法错误 : relative_url_root when deploying rails app on tomcat

JRuby - Tempfile.rb

ruby - 为什么 RSpec 在从 ruby​​ 中运行时运行规范两次并重新加载规范文件?