Consider Guava  Objects.toStringHelper. see http://code.google.com/p/guava-libraries/wiki/CommonObjectUtilitiesExplained