OK it's not that big of a deal for me, just a mere annoyance. I've stated my concerns and you remain adamant on yours.
Alex Karasulu wrote:You are right : it's also used for debugging ;)
I disagree in general with this toString() just being used for logging.
Wrong. It generally prints out an @, not a representation of the object. An even if Joshua may be wrong sometime, I think that this usage of toString() is a common practice.
It's a bad practice that even Josh Bloch should not characterize as only for
logging. And the reason for this is that the JVM automatically converts a
type to a string representation by calling toString() whenever a string is
It's not dangerous : it's the contract. There is nothing wrong in producing a String from an objetc, whne it's dangerous to produce a specific format not agreed on before when it's not candy for the user's eye. Again the contract said 'for the person', not for the program.
This is dangerous and one should not presume it's always safe to
just use toString() as an "only for logging output" method that can be
leisurely set to anything u like.
Do you have an example ?
Sometimes people are surprise when the compiler does the interchange between
the type and the String returned by toString(). I just think any method
that the compiler treats in a special way like this should be considered
And I don't want to use this feature. It always is a waste of time to have to open an object to get what's inside it when a well designed toString() method would have produced the exact representation of the object. When you are debugging, you want to get straight to the bug, not to have to tune your IDE for hours to get what you want.
Also regarding your point about IDE's using toString(): usually there can be
some alignment but if not you can always setup a custom renderer in the
IDE's debugger. Most people rarely ever use this feature since they just
dig into the object via the variable viewer.
In general, and this is something very true for ADS, lacks of logs and lacks of decent toString() methdos induce long and painfull debugging session. We are debugging this server more than we are writing code, now that we have delivered stable versions, and this is something that won't slow down. In any case, I would favor pretty toString() methods over anything else.