Generics und Class.forName

Ich möchte eine Instanz einer angegebenen Klasse mit ihrem Namen erstellen. Mein Code wird unten angezeigt.

Ich bekomme eine Compiler-Warnung. Mache ich das richtig? Ist es überhaupt möglich, den Namen einer Klasse zu verwenden und eine Instanz dieses Typs wiederherzustellen, da der Compiler meines Erachtens nicht weiß, welcher Typ sein soll?

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();
    }
}

Vielen Dank

Antworten auf die Frage(6)

Ihre Antwort auf die Frage