Generics i Class.forName

Chciałbym utworzyć instancję określonej klasy, używając jej nazwy. Mój kod jest pokazany poniżej.

Dostaję ostrzeżenie o kompilatorze. Czy robię to we właściwy sposób? Czy jest nawet możliwe użycie nazwy klasy i odzyskanie instancji tego typu, ponieważ nie sądzę, aby kompilator wiedział, jaki powinien być typ?

public static <T> T create(final String className) {
    try {
        final Class<?> clazz = Class.forName(className);

        //WARNING: Type safety: Unchecked cast from capture#2-of ? to T
        return (T) create(clazz); 
    }
    catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}

public static <T> T create(final Class<T> classToCreate) {
    final Constructor<T> constructor;
    try {
        constructor = classToCreate.getDeclaredConstructor();
        final T result = constructor.newInstance();
        return result;
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

Dzięki

questionAnswers(6)

yourAnswerToTheQuestion