I concur with many posters here. Utility classes have the benefit of being simple and efficient. It should not be necessary to create "objects" every time we need to validate that a string represents a domain entity. This can lead to some pretty bloated implementations that bend over backwards to make every string a domain object. But of course, this post was probably meant for Java programmers who are not adverse and embrace writing 100 lines of code when 1 would have sufficed. ;-)