java - 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 在分配给变量时会更改类型?
解决方案
推荐阅读
- javascript - 以反应形式有条件地添加指令
- mongodb - Codeigniter 将 2 个元素数据更新到 mongodb
- typescript - TypeScript:在对象上强制执行单个动态键
- java - 如何发送包含空格的文件名作为参数以在 Linux OS 的 imagemagick 中转换命令
- javascript - ReadmoreJS - CodePen 不输出任何内容
- javascript - 如何在使用 jquery 发送 AJAX 请求之前检查是否单击了按钮?
- c# - 为文件编写 AppProperties 时如何修复错误请求
- c# - 如何使用 XmlConvert 类将 byte[] 转换为字符串?
- c# - Powershell脚本在c#中使用System.Diagnostics.Process.Start运行时无法加载模块?
- c - 关于 GCC 优化器的问题以及为什么这段代码总是返回 42?