Create instance of generic type in Java?

You are correct. You can’t do new E(). But you can change it to

private static class SomeContainer<E> {
    E createContents(Class<E> clazz) {
        return clazz.newInstance();
    }
}

It’s a pain. But it works. Wrapping it in the factory pattern makes it a little more tolerable.

Leave a Comment