[英]GWT JSNI split method bug
我正在開發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()的String。
您能告訴我我可能會缺少什么或誤會嗎?
預先感謝您的寶貴時間,
親切的問候,
JavaScript列表不是 Java數組。 盡管GWT使用JavaScript列表來模擬Java數組,但這並不意味着它們是同一回事。
相反,您應該從您的方法中返回JsArrayString
,並以這種方式使用它,或者僅使用Java版本的String.split返回真實的Java數組。
謝謝您的回應,Colin Alworth。
通過您的回答,我做了以下工作:
public static final native JsArrayString split(String string, String separator) /*-{
return string.split(separator);
}-*/;
並在Java代碼中:
JsArrayString temp = split(str, "::");
String agentCode = temp.get(1); (an so forth).
非常感謝您的幫助,它的作用就像是魅力:)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.