2012-09-20

JavaAdapterでJavaクラスを拡張する

スクリプトでJavaクラスを拡張したり複数のJavaインターフェースを実装したい場合は、 RhinoのJavaAdapterを利用できる。
ただし、JavaAdapterは実行時にJavaクラスを生成する仕組みなので、 環境によってはセキュリティや配布ファイルサイズを考慮して削除されている。
Javaランタイムに付属のRhinoは、上記理由でJavaAdapterが除かれているため、以下のスクリプトは実行できない。

1. 実行するスクリプト(java-adapter.js):
var stdout = java.lang.System.out;

var filter = new JavaAdapter(
    java.io.FilenameFilter,
    {
        accept: function(dir, name) {
            if (name.endsWith(".js")) {
                return true;
            }
            return false;
        }
    }
);

var dir = new java.io.File(".");
var fileNames = dir.list(filter);
stdout.println(java.util.Arrays.toString(fileNames)); // [java-adapter.js]

2. 実行する:
>java -classpath .;js.jar org.mozilla.javascript.tools.shell.Main -w -debug java-adapter.js
[java-adapter.js]

0 件のコメント:

コメントを投稿