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

将org.jruby.RubyArray类的实例转换为java.util.ArrayList类,java,ruby,jruby,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

我是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;

    }
}
import java.util.ArrayList;
导入java.util.HashMap;
导入org.jruby.embed.LocalVariableBehavior;
导入org.jruby.embed.ScriptingContainer;
公开课考试{
公共静态void main(字符串[]args){
ScriptingContainer=newScriptingContainer(LocalVariableBehavior.PERSISTENT);
测试t=新测试();
LogStatBean=t.newlogstatbean();
sethomeditory(“classpath:/META-INF/jruby.home”);
容器。放入(“bean”,bean);
runScriptlet(“arr=[1,2,3,4,5,6]”;
container.runScriptlet(“puts-arr”);
runScriptlet(“bean.setOutput(arr)”;
System.out.println(bean.getOutput());
}
公共类LogStatBean{
公共ArrayList getOutput(){
返回输出;
}
公共void setOutput(ArrayList输出){
这个。输出=输出;
}
公共数组列表输出;
}
}
我无法在jruby中设置类型为ArrayList的java局部变量,它会引发错误

TypeError: cannot convert instance of class org.jruby.RubyArray to class java.util.ArrayList
  (root) at <script>:1
TypeError:无法将类org.jruby.RubyArray的实例转换为类java.util.ArrayList
(root)at:1
我必须做什么?

Ruby中的数组(通常)转换为Java数组-所以不要再期待ArrayList,或者自己在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>
>[1,2,3]。类
=>阵列
>>[1,2,3].to_java.java_类
=>类[Ljava.lang.Object;
>>[1,2,3].to_java('java.lang.Integer').java_类
=>类[Ljava.lang.Integer;
>>java.util.ArrayList.new[1,2,3]
=> #
>>java.util.Arrays.asList([1,2,3].to_java)
=> #