Java Rhino-可编写脚本的方法:对象get(字符串名称,可编写脚本的开始)找不到正确的键(数字字符串)

Java Rhino-可编写脚本的方法:对象get(字符串名称,可编写脚本的开始)找不到正确的键(数字字符串),java,javascript,rhino,Java,Javascript,Rhino,我正在使用Rhino将javascript对象解析到Java应用程序中,我希望了解可脚本对象的get方法的行为 我的javascript对象与此类似: Obj = {}; Obj['001'] = 'First Content'; Obj['100A'] = 'Second Content'; Obj['100'] = 'Third Content'; 如前所述,我应该使用接受整数和可脚本开头的签名 JavaScript代码| Java代码 a[3]| a.get(3,a) a[“3”]| a

我正在使用Rhino将javascript对象解析到Java应用程序中,我希望了解可脚本对象的get方法的行为

我的javascript对象与此类似:

Obj = {};
Obj['001'] = 'First Content';
Obj['100A'] = 'Second Content';
Obj['100'] = 'Third Content';
如前所述,我应该使用接受整数和可脚本开头的签名

JavaScript代码| Java代码

a[3]| a.get(3,a)

a[“3”]| a.get(3,a)

我的问题是:为什么接受字符串参数的签名与数字字符串不匹配

我的解决方案是否正确,或者是否有一种方法可以只使用(字符串名称、可编写脚本的开始)签名

// Scriptable scope already defined
// id is an object from scope.getIds()
Scriptable content;

if(id instanceof Integer) {
    content = scope.get((Integer) id, scope);
} else {
    content = scope.get((String) id, scope);
}
多谢各位


Rhino 1.7R2

我意识到这并没有明确解决您的问题(即您想要理解),但我想建议您决定不理解

只需实现
Scriptable.get(int,Scriptable)
如下:

对象获取(int索引,可编写脚本的开始){
返回this.get(String.valueOf(index),start);
}

。。。别再担心了。这种奇怪的用于属性访问的双API可能是出于某种古老的性能原因而存在的。记住,Rhino的根非常古老,可以追溯到Netscape(!)试图用Java重写Netscape Navigator(!)的时候。JavaScript标准中的数值属性和其他属性没有区别,因此在我看来,您最好在对象中匹配语言的行为,而不要担心Rhino的特性。

谢谢。你的回答让我对这件事了结了。