我正在开发一个 GWT 应用程序,并且正在获取一个包含选择查询结果的列表。此选择查询有行。每行的每个元素都通过“::”与前一个和下一个元素分隔。
我尝试使用 String.split 拆分它,但需要很长时间才能执行。我读到,目前(我正在使用 GWT 2.5.1),String.split 方法有很多 bug,有时几乎需要比 JSNI 方法多 x1000 倍的时间来执行;所以我采取了这种方法。
我正在使用的 JSNI 方法如下(我从同一站点获取):
public static final native String[] split(String string, String separator) /*-{
return string.split(separator);
}-*/;
但是现在,我收到此错误:
java.lang.ClassCastException:com.google.gwt.core.client.JavaScriptObject$ 无法转换为 [Ljava.lang.String;
即使我在最后写了一个 .toString() ,错误也会变成以下内容:
java.lang.ClassCastException: java.lang.String 无法转换为 [Ljava.lang.String;
我这样调用这个方法:
String[] temp = split(str, "::");
为了得到temp内部分割的结果,以供以后使用。
str 它是一个包含 iterator.next() 的字符串。
您能告诉我我可能遗漏或误解了什么吗?
预先感谢您的宝贵时间,
亲切的问候,
最佳答案
JavaScript 列表不是 Java 数组。虽然 GWT 使用 JavaScript 列表来模拟 Java 数组,但这并不意味着它们是相同的东西。
相反,您应该从方法中返回 JsArrayString
,并以这种方式使用它,或者仅使用返回真正 Java 数组的 Java 版本的 String.split。
关于java - GWT JSNI 拆分方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20230300/