繁体   English   中英

如何获得RHINO中变量的类型?

[英]How can I get the type of a variable in RHINO?

我正在将一些使用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,因为string不为空(请参见上下文类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)); 
           }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM