以下数据:
sku=[111222]
Run Code Online (Sandbox Code Playgroud)
正在作为参数传递给在Rhino javascript引擎中调用的javascript函数.
在java端(数据源自此处)这意味着"sku"的String键被映射到其中包含一个字符串"111222"的ArrayList.
一旦这转到了Rhino方面,我不知道如何将其用作javascript对象.例如:我如何做一些简单的事情就像在JS端获取111222值一样简单?
我决定吐出这个对象的键/值转储在JS方面的样子,这就是我得到的:
sku=
empty: false
indexOf: function indexOf() {/*
int indexOf(java.lang.Object)
*/}
notifyAll: function notifyAll() {/*
void notifyAll()
*/}
removeAll: function removeAll() {/*
boolean removeAll(java.util.Collection)
*/}
trimToSize: function trimToSize() {/*
void trimToSize()
*/}
containsAll: function containsAll() {/*
boolean containsAll(java.util.Collection)
*/}
contains: function contains() {/*
boolean contains(java.lang.Object)
*/}
equals: function equals() {/*
boolean equals(java.lang.Object)
*/}
notify: function notify() {/*
void notify()
*/}
subList: function subList() {/*
java.util.List subList(int,int)
*/}
class: class java.util.ArrayList
set: function set() {/*
java.lang.Object set(int,java.lang.Object)
*/}
isEmpty: function isEmpty() {/*
boolean isEmpty()
*/}
add: function add() {/*
void add(int,java.lang.Object)
boolean add(java.lang.Object)
*/}
ensureCapacity: function ensureCapacity() {/*
void ensureCapacity(int)
*/}
size: function size() {/*
int size()
*/}
iterator: function iterator() {/*
java.util.Iterator iterator()
*/}
clear: function clear() {/*
void clear()
*/}
wait: function wait() {/*
void wait()
void wait(long)
void wait(long,int)
*/}
listIterator: function listIterator() {/*
java.util.ListIterator listIterator(int)
java.util.ListIterator listIterator()
*/}
retainAll: function retainAll() {/*
boolean retainAll(java.util.Collection)
*/}
toString: function toString() {/*
java.lang.String toString()
*/}
hashCode: function hashCode() {/*
int hashCode()
*/}
toArray: function toArray() {/*
java.lang.Object[] toArray(java.lang.Object[])
java.lang.Object[] toArray()
*/}
lastIndexOf: function lastIndexOf() {/*
int lastIndexOf(java.lang.Object)
*/}
addAll: function addAll() {/*
boolean addAll(java.util.Collection)
boolean addAll(int,java.util.Collection)
*/}
clone: function clone() {/*
java.lang.Object clone()
*/}
get: function get() {/*
java.lang.Object get(int)
*/}
getClass: function getClass() {/*
java.lang.Class getClass()
*/}
remove: function remove() {/*
java.lang.Object remove(int)
boolean remove(java.lang.Object)
*/}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何在rhino javascript引擎中使用这些对象?
JavaScript程序正在接收Java ArrayList; 这就是上面的转储匹配API的原因java.util.ArrayList.(请参阅Java API文档.)您可以从JavaScript代码中相对透明地调用该Java对象的Java方法.因此,例如,循环遍历您正在接收的数组的元素:
var sku = [however you are getting it];
for (var i=0; i<sku.size(); i++) {
var nextElement = sku.get(i);
// do something
}
Run Code Online (Sandbox Code Playgroud)
警告:假设ArrayList是在Java端创建的并且正在创建Java对象,上面的算法会将Java java.lang.String放入nextElement变量中.如果您的应用程序是以JavaScript为中心的(例如,typeof(nextElement) == "object" /* not "string" */),则此对象可能会出现奇怪的行为.如果你想要一个JavaScript字符串,你需要转换它; 最简单的方法是String(nextElement).