簡體   English   中英

GWT JSNI拆分方法錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM