While it isn’t as critical as obeying the
When practical, the
Whether or not you specify the format, provide programmatic access to the information contained in the value returned by
It makes no sense to write a
To recap, override
equals
and hashCode
contracts (Items 10 and 11), providing a good toString
implementation makes your class much more pleasant to use and makes systems using the class easier to debug.When practical, the
toString
method should return all of the interesting information contained in the object,
@Override public String toString() {
return String.format("%03d-%03d-%04d",
areaCode, prefix, lineNum);
}
return String.format("%03d-%03d-%04d",
areaCode, prefix, lineNum);
}
toString
. For example, the PhoneNumber
class should contain accessors for the area code, prefix, and line number. If you fail to do this, you forceprogrammers who need this information to parse the string. Besides reducing performance and making unnecessary work for programmers, this process is error-prone and results in fragile systems that break if you change the formatIt makes no sense to write a
toString
method in a static utility class (Item 4). Nor should you write a toString
method in most enum types (Item 34) because Java provides a perfectly good one for you. You should, however, write a toString
method in any abstract class whose subclasses share a common string representation. For example, the toString
methods on most collection implementations are inherited from the abstract collection classes.To recap, override
Object
’s toString
implementation in every instantiable class you write, unless a superclass has already done so. It makes classes much more pleasant to use and aids in debugging. The toString
method should return a concise, useful description of the object, in an aesthetically pleasing format
No comments:
Post a Comment