Rhinoでデータ構造を定義

リテラルがそのまま使えると、もっとシンプルなのになぁ…


lib.js

function $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);

追記
可変長引数を使ったほうがシンプルになるかも…