Genéricos y Class.forName
Me gustaría crear una instancia de una clase específica usando su nombre. Mi código se muestra a continuación.
Recibo una advertencia del compilador. ¿Estoy haciendo esto de la manera correcta? ¿Es posible incluso usar el nombre de una clase y recuperar una instancia de ese tipo, ya que no creo que haya ninguna forma de que el compilador sepa cuál debería ser el tipo?
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();
}
}
Gracias