
 You might see such a typesafe API as:
 <pre>
 class Typesafe {
   &lt;T&gt; T obtain(Class&lt;T&gt; type, ...);
 }
 </pre>
 Consumed in the manner of:
 <pre>
 Foo foo = typesafe.obtain(Foo.class, ...);
 </pre>
 Yet, you run into problems when you want to do this with a parameterized type:
 <pre>
 List&lt;String&gt; listOfString = typesafe.obtain(List.class, ...); // could only give us a raw List
 </pre>
 <code>java.lang.reflect.Type</code> might provide some value:
 <pre>
 Type listOfStringType = ...; // 