I don't understand your last 2 comments on this line. The javadoc says nothing about those 2 methods should return the same values (I believe that's what you meant by "return == values"). But anyway, that really isn't the point. The real question is why is that change needed? Furthermore, since Name is really an interface, there's no guarantee that the implementations of that interface will have a proper overridden toString() implementation.