gpt4 book ai didi

java - 如何获取 RHINO 中变量的类型?

转载 作者:行者123 更新时间:2023-12-01 14:53:43 26 4
gpt4 key购买 nike

我正在将一些使用 SpiderMonkey 的代码翻译为 RHINO,它使用方法 JSVAL_IS_INT(val),其中 'val' 是 jsval(SpiderMonkey 代码),我尝试使用 RHINO 的 toNumber(val),其中 'val' 是 Object 的实例,但似乎 toNumber 没有检查 'val' 的类型。

这是类似案例的代码,带有 toBoolean:

    ContextTest ct = new ContextTest();
ct.val = "lol";
System.out.println(Context.toBoolean(ct.val));
System.out.println(ct.val);

这显示:

true
lol

但是 toBoolean() 不应返回 true。

最佳答案

诸如 toBoolean、toNumber 之类的上下文方法不适合检查类型。这些方法尝试进行“强制转换”,并且不检查类型。在您的示例中, toBoolean 返回 true,因为字符串不为空(请参阅 context class source )。

要检查/将值转换为整数,请使用:

  if(val instanceof Integer) {
Integer valInt = (Integer) val;
System.out.println(valInt);
} else if(val instanceof Scriptable) { //Rhino class embedes any js value
Scriptable s = (Scriptable) val;
String className = s.getClassName();// ECMA class name
System.out.println(className);
if(className.toLowerCase().equals("number")) {
System.out.println(Context.toNumber(val));
}
}

关于java - 如何获取 RHINO 中变量的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14525066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com