Rhinoで内部クラスをnewしたい
Tungsten ReplicatorのJavaScriptフィルタで、OneRowChangeクラスの内部クラス、ColumnSpecをnewしようとしています。
ColumnSpecクラスはスタティックではないので、Javaなら oneRowChange.new ColumnSpec()
とするところですが、これをRhino経由でJavaScriptで記述するにはどうすればよいでしょうか。
今まで以下を試してみましたが、エラーになるばかりです。
$ cat Outer.java
public class Outer {
public class Inner {
public Inner() {
}
}
}
$ javac Outer.java
$ java -cp /usr/local/Cellar/rhino/1.7R4/libexec/js.jar:. org.mozilla.javascript.tools.shell.Main
Rhino 1.7 release 4 2012 06 18
js> o = new Packages.Outer()
Outer@12413ffc
js> new o.Inner()
js: uncaught JavaScript runtime exception: TypeError: org.mozilla.javascript.Undefined@675dd521 is not a function, it is undefined.
js> new Packages.Outer.Inner()
js: Java constructor for "Outer$Inner" with arguments "" not found.
js> o.new Inner()
js: "<stdin>", line 4: missing ; before statement
js: o.new Inner()
js: ...........^
js: "<stdin>", line 4: Compilation produced 1 syntax errors.