06/07/18 18:12:28
>>525
ウチで試したら、代入したときからDoubleみたい。
というか、何か呼び出し方が違うなぁ・・・・Binding使ってるから変換されてる?
この挙動から推察すると、JavaとのインターフェースではDoubleになるのが仕様なのでは?
/*ソースはインデントの為、半角→全角変換しています*/
package script;
import javax.script.*;
public class TypeTest {
public static void main(String[] args) {
try {
ScriptEngine se = new ScriptEngineManager().getEngineByName("js");
Bindings bdg = se.createBindings();
bdg.put("x", null);
se.setBindings(bdg, ScriptContext.ENGINE_SCOPE);
Object res;
res = se.eval("var x = 1;");
System.out.println("JS Binding:"
+ bdg.get("x").getClass().getName() + ":"
+ bdg.get("x"));
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
結果:
JS Binding:java.lang.Double:1.0