JavascriptをJavaに埋め込むためにRhinoを試しています。Javascript で 2 つの int を追加するスクリプトを評価すると、結果が Double として返されることに気付きました。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
engine.put("x", 3);
engine.put("y", 4);
assertEquals(3, engine.eval("x")); // OK
assertEquals(4, engine.eval("y")); // OK
assertEquals(7, engine.eval("x + y")); // FAILS, actual = (Double) 7.0
では、なぜx + y
式は int ではなく double を返すのでしょうか?
Javascript自体が、私が理解できないタイプの昇格を行っていますか?