2015-02-08 27 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()(不建议使用,因为您必须创建新对象)。

相关问题