 <p>The simplest solution is to use</p> <pre><code>new Loadable(); </code></pre> <p>if the class is know at compile time and you expect it to be available at runtime. Note: this will throw a <code>NoClassDefError</code> at runtime if it is not available.</p> <p>If you are not sure it will be available a runtime, you might use </p> <pre><code>Class.forName("classload.Loadable").newInstance(); </code></pre> <p>as it is clearer as to which exceptions will be thrown.</p> <p>The problem with</p> <pre><code>classload.Loadable.class.newInstance() </code></pre> <p>is that it's not particularly useful in either context. </p> <p>Note: <code>Class.newInstance()</code> has a known issue were it will throw <em>checked</em> exceptions which you don't know about. i.e. if the Constructor throws a checked exception it won't be wrapped and the compiler can't tell what will be thrown.</p>