Here's an implementation of createContents
that uses TypeTools (which I authored) to resolve the raw class represented by E
:
E createContents() throws Exception { return TypeTools.resolveRawArgument(SomeContainer.class, getClass()).newInstance();}
This approach only works if SomeContainer
is subclassed so the actual value of E
is captured in a type definition:
class SomeStringContainer extends SomeContainer<String>
Otherwise the value of E is erased at runtime and is not recoverable.