2012-09-20

Javaが提供する長いクラス名(FQCN)の代わりにJavaScript流のエイリアスを使う

Rhinoから利用するJavaクラスやJavaパッケージの名前が事前に分かっている場合、 ローカル変数をエイリアスにすることで短く書けるようになる。
特にこの方法は、エイリアスの変数名を工夫することで、 JavaScriptの組み込みオブジェクトと同じ名前のJavaクラスでも取り込めるメリットがある。
(importPackageやimportClassは便利だが、グローバルスコープに直接Javaクラス名を書き込むので、 例えばjava.lang.Stringを取り込むと、同じStringという名前を持つJavaScriptの組み込みオブジェクトが グローバルスコープから見えなくなってしまう)

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

(function() {
    var JString = java.lang.String;
    var JMath = java.lang.Math;
    stdout.println(JString.format("%.0f, %.0f", JMath.PI, JMath.max(3.2, 6.4)));
})();

// スコープ外に影響を与えない
stdout.println("JString is " + typeof JString);
stdout.println("JMath is " + typeof JMath);

2. 実行する:
>java -classpath .;js.jar org.mozilla.javascript.tools.shell.Main -w -debug java-class-name-alias.js
3, 6
JString is undefined
JMath is undefined

0 件のコメント:

コメントを投稿