现在,我希望它只打印它所说的内容,而不是内存地址。我将如何实现这一目标?
public Telefonnummer[] getTelenummer() {
Telefonnummer[] tnummer = new Telefonnummer[nummerarray.size()];
nummerarray.toArray(tnummer);
System.out.println(Arrays.toString(tnummer) );
return tnummer;
}
是构造函数和:
private static void kundSök() {
System.out.println("...? ");
String namn = keyboard.nextLine();
if (kunderna.containsKey(namn)) {
for (String k : kunderna.keySet()) {
Kund kund = kunderna.get(k);
System.out.println(kund);
System.out.println(kund.getTelenummer());
在我将一个人添加到ArrayList等之后,它给了我一个输出:
Sam wasdfgn [123456:efdg] [LTelefonnummer; @ 28d93b30最后一部分,内存地址位,是我想要摆脱的部分。 再一次,我如何实现这一目标?
编辑:我试图覆盖,但它根本没有做任何事情。还有其他问题吗?
答案 0 :(得分:1)
default behaviour for toString
是打印类型名称(如L
后跟类型名称),后跟@
和hashCode的hexString(默认情况下是内存地址)对象)。
要更改此设置,请覆盖toString
课程的Telefonnummer
方法。
public class Telefonnummer {
private String nummer;
...
@Override public String toString() {
return "Dial " + nummer + " for a good time";
}
}
答案 1 :(得分:0)
Guava库有Joiner,可用于此。见https://code.google.com/p/guava-libraries/wiki/StringsExplained
String str = Joiner.on(",")。join(list);
您还必须在类的列表元素上使用toString函数