Это домашняя работа? Если это так, вы должны пометить его как таковой.
То, что обеспечит лучшее решение, зависит от того, чего вы хотите достичь. Если вам нужно несколько строковых представлений объекта, вы можете ввести несколько версий toString, например:
public String toString() {
}
public String toXmlString() {
}
public String toHumanFriendlyString() {
}
Если, с другой стороны, у вас есть методы, подобные вышеописанным, реализованные в вашем объекте, и вы хотите установить формат вывода, вы можете использовать тип вывода:
public String toString() {
switch (outputType) {
default:
return "Unknown output type for: " + toDebugString();
case TYPE_DEBUG:
return toDebugString();
case TYPE_XML:
return toXmlString();
}
Если вам нужно, чтобы реализация была настраиваемой из других частей вашего кода, используйте шаблон плагина:
interface Stringable {
String toString(A a);
}
class A {
Stringable impl = this;
void setStringable(Stringable s) {
impl = s;
}
String toString() {
return impl.toString(this);
}
String toString(A a) {
return "A a";
}
}