javascript - 如何使用传入Rhino javascript引擎的ArrayList java对象?

标签 javascript rhino

以下数据:

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/

相关文章:

java - 如何为 NetBeans 创建自定义语言解析器?

javascript - ionic Controller 和服务 : "TypeError:... is not a function"

javascript - 明年倒计时不会重置

javascript - 从 Fancybox iframe 调用 jQuery?

javascript - 如何从 Mozilla Rhino 的 Javascript 调用 C++

html - 是否有在 V8 或 Rhino 而不是 JavaScriptCore 上运行的 HTML5 桌面应用程序框架(如 Titanium 或 Adob​​e AIR)?

javascript - 从 JSON 数组中的嵌套对象获取所有键及其值(不包含 jQuery)

javascript - 推特 Bootstrap : Popover and Auto Refresh

fluent-nhibernate - Rhino.Commons + Fluent NHibernate

c# - 无法让 Rhino Mock 迭代 DataReader