2013-01-31 50 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