Hiding a constructor behind a static creator method?
<p>I've recently discovered an interesting way to create a new instance of an object in <a href="http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/HashBiMap.html#create%28%29" rel="nofollow">Google Guava</a> and <a href="http://projectlombok.org/features/Data.html" rel="nofollow">Project Lombok</a>: Hide a constructor behind a static creator method. This means that instead of doing <code>new HashBiMap()</code>, you do <code>HashBiMap.create()</code>.</p>

<p>My question is why? What advantage do you have of hiding the constructor? To me I see absolutely no advantage of doing this, and it seems to break basic object creation principles. Since the beggining you create an object with <code>new Object()</code>, not some <code>Object.createMe()</code> method. This almost seems like creating a method for the sake of creating a method.</p>

<p>What do you gain from doing this?</p>
