2016-12-07 65 views
0

有特別的問題與家庭作業要打印的陣列。我沒有特定的代碼...沒有尋找特定的答案。 它使用print方法打印哈希代碼,並且一致意見是.toString()方法解決了這個問題。我不能得到這個工作,但發現這裏的第二個答案:Overiding一個的ToString方法VS循環一個.getMethod打印

https://stackoverflow.com/a/19845901/7262393

我的問題是(如果它通常可以回答),爲什麼難道不我只是用一種獲得()方法,並遍歷所有這個答案中建議的元素?是否有任何特定的原因被用於另一個?我假設.toString方法是一個循環,將每個元素轉換爲一個字符串,然後打印出來。

感謝

+0

超過一個數組?這是'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''[Ljava.lang.String; @ 3e25a5''的結果。那麼你在哪裏看到一個循環? – AxelH

+0

'toString()'不會遍歷數組。默認情況下只是打印哈希碼。但通常當人們在一些類中重寫'toString()'時,它們會使它打印對象的屬性/屬性/字段/全局變量。 – rafid059

+0

對不起。不打印它們。轉換每個...也許我想錯了。覆蓋它通過並轉換每個。它的方法是對的?所以它的代碼必須在某個地方。 – Dan

回答

0

當使用獲得()方法來連接多個字段你要犧牲一些性能的String,因爲每個+操作一個新的String需要創建(Java中的字符串是不可變的) 。

使用時,你可以使用像一個的ToString()方法:

String.format("Person {name:%s, street:%s}",name,street); 

這將有更好的表現。

0

我猜想,阿帕奇百科全書ReflectionToStringBuilder會幫助你。請查看document瞭解詳情。

它可以在明年的方式來使用:

ReflectionToStringBuilder.toString(<object you want to print to string>); 
0

那麼你更願意做你想看到一個容器對象的內容每一次?循環播放並打印每個包含的項目或致電System.out.println(obj.toString());

一般來說,最好添加toString()方法的類,因爲這是你會想在調試的時候做了很多的東西很可能,它會爲你節省重複你的努力很多倍!

+0

謝謝!此時此刻我被任務規則銬住了。 「不要改變你的類文件」因此......循環它。我非常感謝所有的迴應。謝謝。 – Dan

+0

你可以繼承這個類並添加'toString()'方法,然後使用子類嗎? (不要忘了提高你認爲有用的答案!謝謝你很好,但它不是upvoting :-)。) – daphtdazz

+0

你明白了。我只是在尋找一個理由。想要了解爲什麼,而不僅僅是如何。沒有理由,我永遠不會記住任何事情。 – Dan