Treta com Reflection (Só para os fortes)

Caras essa agora vai ser pra rachar o crânio de qqr um. O problema: Carregar uma classe que implementa uma interface simples com 1 método apenas (@FunctionalInterface), converter o objecto Class ( ou Class ) e chamar o metodo atraves do objecto Interface.

Vo dar uns codigos pra facilitar:

Classe interface:

 @FunctionalInterface
 public interface SimpleInterface {
     void execute();
 }

Classe que implementa:

public class SIImpl implements SimpleInterface {
    @Override
    public void execute() { System.out.println("Caralho borracha..."); }
}

Class Main:

public class Main {
    public static void main(String[] args) {
        SimpleInterface si = Carregador.load(--CAMINHO PARA A CLASSE AQUI--);
        si.execute();
    }
}

Quem conseguir fazer esse carregador e de preferencia que ele consiga carregar de outros caminhos externos à jar principal vai ganhar, slá, um joinha. :stuck_out_tongue:. Que os jogos começem!

Assim de cor, sem testar…

SimpleInterface si = Class.forName("com.xxxx.Myclass").newInstance();
1 curtida

Neste metodo onde MyClass deveria estar? Na mesma pasta que Class? Em algum lugar do javapath?

sim

Ja trabalhei em um projeto com uma parada dessa, que carregava classes e o caminho da classe vinha do banco de dados, assim Class.forName(“caminha da classe”).newInstance().