[英]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.