2013-01-31 85 views
2

我正在從C++背景轉向Java,我正在掌握不重載運算符的概念,就像Java方式一樣。我目前正試圖弄清楚如何處理這種情況,如果我用C++編寫的話,我會爲我的課程重載operator<<並稱之爲一天。Java等價於C++輸出流重載

這種情況應該如何在Java中處理?有沒有具體的語法特定的程序,或者我想你已經回答了你自己的問題是因爲寫東西像

public void PrintMyStuff(final MyClass myClass){ 
    System.out.print(/*MyClass member1*/); 
    System.out.print(/*MyClass member2*/); 
} 

回答

6

一樣簡單。爲了將更多的「儀式」和「正確的做事方式」放在一起 - 對於這種「打印方法」的約定被稱爲toString(),並且它應該返回一個字符串 - 然後該字符串被顯式打印。

(...雖然我會在你不泄露祕密,如果你只是在方法打印像您要...尤其是如果它只是爲自己的目的......)

這裏是顯着鏈接關於這個約定:http://www.javapractices.com/topic/TopicAction.do?Id=55

1

你想得到一個對象的字符串表示?如果是這樣,只需重寫toString()方法。例如:

@Override 
public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    sb.append(member1); 
    ... 
    sb.append(member2); 
    return sb.toString(); 
} 

StringBuilder將是最接近相當於std::stringstream我想。

hth