特にこの方法は、エイリアスの変数名を工夫することで、 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.js3, 6JString is undefinedJMath is undefined
0 件のコメント:
コメントを投稿