firstly, how to obtain this? Doable, but not straightforward.
 List&lt;String&gt; listOfString = (List&lt;String&gt;) typesafe.obtain(listOfStringType, ...); // nongeneric Type would necessitate a cast
 </pre>
 The "type literal" concept was introduced to provide an alternative, i.e.:
 <pre>
 class Typesafe {
   &lt;T&gt; T obtain(TypeLiteral&lt;T&gt; type, ...);
 }
 </pre>
 Consuming code looks like:
 <pre>
 List&lt;String&gt; listOfString = typesafe.obtain(new TypeLiteral&lt;List&lt;String&gt;&gt;() {}, .