以下数据:
sku=[111222]
作为参数传递给在 Rhino javascript 引擎中调用的 javascript 函数。
在 java 端(数据来源),这意味着“sku”的字符串键被映射到其中包含一个字符串“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)
*/}
谁能告诉我如何在rhino javascript引擎中使用这些对象?
最佳答案
JavaScript 程序正在接收 Java ArrayList;这就是为什么上面的转储与java.util.ArrayList
的API相匹配。 (参见 the Java API documentation 。)您可以从 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
}
警告:假设 ArrayList 是在 Java 端创建的,并且正在创建 Java 对象,上面的算法会将 Java java.lang.String
放入 nextElement
变量。如果您的应用程序以 JavaScript 为中心(例如,typeof(nextElement) == "object"/* not "string"*/
),则该对象的行为可能会很奇怪。如果你想要一个 JavaScript 字符串,你需要对其进行转换;最简单的方法是String(nextElement)
。
关于javascript - 如何使用传入Rhino javascript引擎的ArrayList java对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532005/