java 和 java 脚本 - 访问地图
java and javascript - Access to a Map
我正在使用 rhino 在我的 Java 程序中执行 javascript 代码。
我无法在 javascript.
中迭代地图
Java 边:
private final Map<Long, ClassEmployees > employees ;
...
employees.put (numEmployees, new ClassEmployees());
...
Java脚本端:
keys = employees.keySet();
for (var i in keys) {
print ("++ " + i); // ===> print the method ??? Strange...no?
}
===> 输出:
++ getClass
++ iterator
++ toArray
++ addAll
++ remove
++ equals
++ containsAll
++ class
++ hashCode
++ contains
++ wait
++ add
++ size
++ clear
++ isEmpty
++ notify
++ empty
++ retainAll
++ toString
++ notifyAll
++ removeAll
您的 keys
变量包含对 Java Set
对象的引用,
但是 JavaScript 的 for in
构造并不知道如何迭代它,因此就像对待任何其他对象一样对待它。
The for...in statement iterates over the enumerable properties of an object
Set
对象方法是它的可枚举属性,因此这就是你得到的。
要遍历 Set
的基础值,您应该使用显式迭代器(就像在 Java 中一样),或者简单地将其转换为数组,例如:
for each (var i in keys.toArray() ) {
//...
}
我正在使用 rhino 在我的 Java 程序中执行 javascript 代码。 我无法在 javascript.
中迭代地图Java 边:
private final Map<Long, ClassEmployees > employees ;
...
employees.put (numEmployees, new ClassEmployees());
...
Java脚本端:
keys = employees.keySet();
for (var i in keys) {
print ("++ " + i); // ===> print the method ??? Strange...no?
}
===> 输出:
++ getClass
++ iterator
++ toArray
++ addAll
++ remove
++ equals
++ containsAll
++ class
++ hashCode
++ contains
++ wait
++ add
++ size
++ clear
++ isEmpty
++ notify
++ empty
++ retainAll
++ toString
++ notifyAll
++ removeAll
您的 keys
变量包含对 Java Set
对象的引用,
但是 JavaScript 的 for in
构造并不知道如何迭代它,因此就像对待任何其他对象一样对待它。
The for...in statement iterates over the enumerable properties of an object
Set
对象方法是它的可枚举属性,因此这就是你得到的。
要遍历 Set
的基础值,您应该使用显式迭代器(就像在 Java 中一样),或者简单地将其转换为数组,例如:
for each (var i in keys.toArray() ) {
//...
}