如果以下程序在JDK 11下运行:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
System.out.println(engine.eval("var result = java.lang.Integer.valueOf(1) + 1; result").getClass());
System.out.println(engine.eval("java.lang.Integer.valueOf(1) + 1").getClass());
结果将是:
java.lang.Integer类
java.lang.Double类
但是在JDK8下:
java.lang.Double类
java.lang.Double类
与直接使用变量相比,为什么Nashorn在将变量分配给变量时会更改类型?