リテラルがそのまま使えると、もっとシンプルなのになぁ…
lib.jsfunction $ary(js_ary, clazz) {
if(!clazz) {
clazz = java.lang.Object;
}var ary = java.lang.reflect.Array.newInstance(clazz, js_ary.length);
for(var i in js_ary) {
ary[i] = js_ary[i];
}return ary;
}function $list(ary) {
var list = new java.util.ArrayList();for(var i in ary) {
list.add(ary[i]);
}return list;
}function $map(obj) {
var map = new java.util.HashMap();for(var i in obj) {
map.put(i, obj[i]);
}return map;
}
本体#!/usr/bin/env rhino
load('lib.js');a = $list([
1,
2,
$list(["aiueo", 12345]),
$map({
x: 'X',
y: $list([1,2])
})
]);print(a);
追記
可変長引数を使ったほうがシンプルになるかも…