Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usando um builder para gerar a instancia

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

}

1 resposta
solução!

Conforme o objeto for crescendo, a menos que tenha algum motivo específico, acho difícil ver um objeto sendo instanciado dessa forma.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software