2

我正在从 C++ 背景进入 Java,我目前正在掌握不重载运算符的概念,就像 Java 方式一样。我目前正试图弄清楚如何处理这样一种情况,如果我用 C++ 编写,我会operator<<为我的班级超载并收工。

在Java中应该如何处理这种情况?是否有具有特定语法的特定过程,或者就像编写类似的东西一样简单

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

2 回答 2

6

我想你已经回答了你自己的问题。为了在事物中添加更多“仪式”和“正确的做事方式”——约定是将此“打印方法”称为 toString(),并且它应该返回一个字符串——然后显式打印该字符串。

(......虽然如果你只是按照你想要的方式打印,我不会对你说三道四......特别是如果它只是为了你自己的目的......)

这是有关此约定的重要链接:http ://www.javapractices.com/topic/TopicAction.do?Id=55

于 2013-01-31T21:00:49.223 回答
1

你想得到一个对象的字符串表示吗?如果是这样,只需覆盖该toString()方法。例如:

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

我猜AStringBuilder将是最接近的等价物。std::stringstream

hth

于 2013-01-31T21:06:14.560 回答