2015-02-08 31 views
0

我創建String類型的ArrayList在類演示如下:如何將一個String arrayList元素轉換爲一個String變量。

protected ArrayList<String> stringList; 

public Demo() 
{ 
stringList = new ArrayList<String>(); 
} 

在稱爲客戶端中的其它類,我創建的類演示的目的,所以可訪問該ArrayList:

Demo d; 

public Client() 
{ 
b = new Demo(); 
} 

客戶端類中存在的另一種稱爲發送消息的方法需要String類型的參數。我調用了發送消息,並將字符串arrayList作爲參數參數,但由於參數的類型不是字符串,我一直收到錯誤。

sendMessage(b.stringList); 

那麼,有沒有辦法將arrayList元素存儲到字符串變量中,以便它們可以在sendMessage方法中使用。

+0

取決於用例。你可以簡單地通過在stringList上調用'toString()'來獲得String。 – 2015-02-08 16:07:15

回答

0

嘗試在列表中調用toString方法以將數組列表作爲字符串傳遞。

所以不是:

sendMessage(b.stringList); 

用途:

sendMessage(b.stringList.toString()); 

通過這樣做,你正在創建一個新的String對象每次(服用任何有在列表中的快照的那個點時間),當你嘗試調用sendMessage api時,並且不會反映你將在你的字符串列表發佈後將該字符串對象傳遞給sendMessage api的任何更改,直到再次調用sendMessage。

0

聽起來好像你想對b.stringList的每個元素調用sendMessage(),但你應該澄清這一點。在這種情況下,您可以遍歷:

for (String element : b.stringList) { 
    sendMessage(element); 
} 

或者,關於Java 8,只需

b.stringList.forEach(this::sendMessage); // Assuming sendMessage is a method of 'this'. 

如果你想在列表的字符串表示,一個ArrayList確實有toString方法,但如果一般需要與List兼容,請編寫自己的方法轉換爲String,使用庫或使用new ArrayList<>(yourList).toString()(不建議使用,因爲您必須創建新對象)。

相關問題