java.lang.ClassCastException:jdk.nashorn.internal.objects.Na
java.lang.ClassCastException: jdk.nashorn.internal.objects.NativeArray cannot be cast to java.lang.Comparable
使用Nashorn 运行JavaScript时
var jsArray = [7,4,1,8,3,2];
var list = java.util.Arrays.asList(jsArray);
java.util.Collections.sort(list);
list.forEach(function(el) { print(el) } );
我有
Exception in thread "main" java.lang.ClassCastException: jdk.nashorn.internal.objects.NativeArray cannot be cast to java.lang.Comparable
at java.util.Collections.sort(Collections.java:170)
那么在JavaScript中使用Java集合的方法是什么呢?
更新:
多亏了Attila,JS和JJS脚本不会产生相同的输出
var jsArray = [1,2,3,4];
jsArray.forEach(function(el) { print(el) } );
var jsArray = [1,2,3,4];
//var list = java.util.Arrays.asList(jsArray);
var list = Java.to(jsArray, Java.type('java.util.List'))
list.forEach(function(el) { print(el) } );
使用java.util.Arrays.asList
将创建一个数组,其中单个元素为JS数组。JS数组不是Java数组。。。
使用Java.to(jsArray, Java.type('java.util.List'))
而不是java.util.Arrays.asList
。生成的列表将由JS数组支持,因此对其中一个的更改将由另一个反映出来。您还可以将JS数组转换为只需Java.to(jsArray)
(相当于Java.to(jsArray, Java.type('java.lang.Object[]')
)的Java数组。因此,如果您想完成数组转换步骤,可以使用java.util.Arrays.asList(Java.to(jsArray));
.
通常,在Java方法签名指定数组参数的大多数情况下,Nashorn会自动将JS数组转换为Java数组,因此您不必大量显式使用Java.to()
。不幸的是,Arrays.asList(T...)
是一个vararg方法,因此在如何处理该参数方面存在一些歧义。
相关文章:
- creating objects from variables ES6
- Javascript Objects?
- JSON and javascript objects
- Angularjs orderby objects keys
- ExtJs 5.0:forEach on Array of Objects在IE8中不起作用
- JavaScript - objects liefetime
- Facebook JSON empty objects
- @internal react 代码中的 JavaScript 文档标签,是 jsdoc、闭包还是其他什么
- laravel ajax get request on orderBy => internal server er
- JavaScript - Objects Id
- MVC 3 jquery ajax post 2 objects
- AngularJS (500 Internal Server Error) for http put
- document.execCommand('copy') on objects not in DOM?
- Table of objects - uniq
- Javascript - 检查 Amazon Objects 以查看是否定义
- jQuery.extend() deep clone nested objects
- JavaScript - ui-select and objects
- NodeJS&Gulp Streams&Vinyl File Objects-用于NPM包的Gulp W
- Javascript: ForEach over sub objects
- java.lang.ClassCastException:jdk.nashorn.internal.objects.Na