2011-09-23 100 views
1

以下數據:如何使用傳遞給Rhino javascript引擎的ArrayList java對象?

sku=[111222] 

被傳遞作爲參數的JavaScript函數在Rhino JavaScript引擎被調用。

在java端(數據來源處),這意味着「sku」的一個String鍵被映射到一個ArrayList中,其中包含一個String「111222」。

一旦這轉到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) 
*/} 

誰能告訴我如何與犀牛這樣的對象工作JavaScript引擎?

回答

7

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.lang.String變成了nextElement變量。如果您的應用程序是以JavaScript爲中心的(例如,typeof(nextElement) == "object" /* not "string" */),則此對象可能會表現異常。如果你想要一個JavaScript字符串,你需要轉換它;最簡單的方法是String(nextElement)

相關問題