Javascript Nashorn-乐观型筛选器已损坏
我正在传递一个对象指向JS端的基本对象。我以乐观的方式运行纳肖恩。我使用的是1.8.0.92-b14版本。当我返回一个布尔值时会发生奇怪的事情至少这是我在调试时注意到的-,从这一点开始,Nashorn引擎停止尝试对这些值进行乐观。这将导致long值作为对象传递给js端,但是在我返回布尔值之前,Nashorn成功地将long值作为数字传递给脚本端 下面是我嵌入到脚本上下文中的对象Javascript Nashorn-乐观型筛选器已损坏,javascript,java,java-8,rhino,nashorn,Javascript,Java,Java 8,Rhino,Nashorn,我正在传递一个对象指向JS端的基本对象。我以乐观的方式运行纳肖恩。我使用的是1.8.0.92-b14版本。当我返回一个布尔值时会发生奇怪的事情至少这是我在调试时注意到的-,从这一点开始,Nashorn引擎停止尝试对这些值进行乐观。这将导致long值作为对象传递给js端,但是在我返回布尔值之前,Nashorn成功地将long值作为数字传递给脚本端 下面是我嵌入到脚本上下文中的对象 public class TestObject { public Object primitivesAsIs
public class TestObject {
public Object primitivesAsIs(String type) {
Object result;
switch (type) {
case "f":
result = 15.0f;
break;
case "d":
result = 15.0;
break;
case "i":
result = 1;
break;
case "l":
result = 1L;
break;
case "b":
result = true;
break;
case "s":
result = "hello";
break;
default:
throw new RuntimeException();
}
return result;
}
以下是我的JS代码:
var类型={
1:“f”,
2:“d”,
3.“我”,
4:“l”,
5:“b”,
6:“s”,
};
原发性精神分裂症();
函数原语{
Logger.log(“ENTRY primitivesAsIs()”;
//循环2次以查看对其他转换的影响
对于(var j=0;j<2;j++){
Logger.log(信息,“循环:+j”);
对于(变量i=1;i<7;i++){
var result=TestObject.primitivesAsIs(convertToName(i));
log(“读取值为:“+convertToName(i));
Logger.log(“类型:”+Typeof结果);
}
}
log(“leve primitivesAsIs()”;
}
函数convertToName(值){
var val=类型[值];
返回val;
}