2010-03-16 105 views
2

toString方法我有一個可變參數的構造是這樣的:爲可變參數構造

public class Sentence { 

    public String[] str; 

     public Sentence(Object... text){ 

     StringBuilder sb = new StringBuilder(); 
     for (Object o : text) { 
      sb.append(o.toString()) 
      .append(" "); 
     } 
     System.out.println(sb.toString()); 

    } 

} 

類可以可以通過此構造接受各種類型的數據的(整數,字符串和句子對象以及)。如何爲這樣的類創建適當的toString方法?

回答

2

不知道你想要什麼來實現的,但隨着toString()方法...

返回 對象

的字符串表示...我想我會將您的sb.toString()調用的結果作爲成員字符串變量(如private String asString)存儲,並返回toString()方法覆蓋Object中的方法:

public String toString() { 
    return this.asString; 
} 
+0

它是這個職位的延續:http://stackoverflow.com/questions/2373419/one-constructor-multiple-arguments – owca 2010-03-16 23:50:40

0

不能在toString中打印句子,因爲如果您初始化彼此的2個Senence對象,則可以獲得無限循環。

因此,打印所有字符串和對象,以及是否有可能從Sentence對象獲取一些數據,或者只有「1句對象」指出它也作爲初始參數傳遞。

+0

對不起,你如何得到一個無限循環? – 2010-03-16 23:33:32

+0

目前他不會得到它,但如果他添加'setText(Object ... text)方法或類似的東西,那麼他可以期待這個驚喜。 – Roman 2010-03-16 23:50:08

+0

我認爲@Roman假設'Sentence'會包含一個成員變量'Object [] objects',它會跟蹤哪個'Object'在'Sentence'中,並且'Sentence'會有某種' append()'方法允許添加額外的'Object's。在這種情況下,在'toString()'內部產生'String'可能會導致無限循環:'Sentence s1 = new Sentence();句子s2 =新句子(s1); s1.append(s2);'那會導致無限循環。這些假設可能無效,我認爲@ Brabster的解決方案更有意義。 – 2010-03-16 23:53:08