首页 > 解决方案 > Integer 和 Double 之间的 Nashorn 类型转换混淆

问题描述

如果以下程序在 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 在分配给变量时会更改类型?

标签: javajava-8java-11nashorn

解决方案


推荐阅读