Como eu queria botar em prática ensinamentos de cursos anteriores, resolvi criar um builder ao invés de classes especializadas como visto no vídeo 1 da aula 3.
A pergunta é, é uma maneira boa/ viável de se criar essa instância? Vi que no final do vídeo o professor comentou que a essas classes especializadas iriam continuar crescendo, usar o builder ainda é uma boa opção para este futuro?
A classe que eu criei ficou assim:
public class ReflectionBuilder {
private Class<?> className;
private Constructor<?> declaredConstructor;
public ReflectionBuilder refleteClasse(String fqn) {
try {
Class<?> className = Class.forName(fqn);
this.className = className;
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return this;
}
public ReflectionBuilder getConstrutor() {
try {
Constructor<?> declaredConstructor = this.className.getDeclaredConstructor();
this.declaredConstructor = declaredConstructor;
} catch (NoSuchMethodException | SecurityException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return this;
}
public Object invoca() {
try {
return this.declaredConstructor.newInstance();
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch(InvocationTargetException e) {
e.printStackTrace();
throw new RuntimeException("Erro ao invocar construtor" + e.getTargetException());
}
}
}