Bom dia a todos,
A minha duvida é quais os prejuízos em estanciar as classes em tempo de execução, a intenção é usar isso na montagem do menu do sistema, tenho mais de 50 itens, não quero usar um
switch (item) {
case “”:
}
para cada opção, então pensei em criar um Class.forName(cOpcao).newInstance();
Sei q funciona pq já o fiz, mas não me medi desempenho ou estouro de memoria ou algo do tipo, se alguém já usa ou tem mais conhecimento dos efeitos do Class.forName, se puder me orientar eu agradeço.
Abs,
Instanciar em tempo de execução com Class.forName
K
4 Respostas
Não vejo prejuízo em usar reflection nesse seu cenário.
Inclusive é uma forma legal de fazer a inversão de dependência, em algum lugar você mapeia as suas opções com o nome da classe a ser instanciada.
K
Com esta solução surgiu um problema, depois que eu instancio, preciso pegar um method que esta na classe e esta parte não estou conseguindo fazer… vou colocar um exemplo:
Class classe = Class.forName("teste");
classe.newInstance();
JInternalFrame frm = (JInternalFrame) classe.getMethod("getFrame").invoke(classe);
na minha classe teste.java eu tenho um metodo:
public JInternalFrame getFrame() {
return frm;
}
Como eu faço para pegar o getFrame em classe que eu instanciei ?
Vlw a força
K
Fazendo assim, funciona !
Object classe = Class.forName(cModulo).newInstance();
JInternalFrame frm = (JInternalFrame) classe.getClass().getDeclaredMethod("getFrame").invoke(classe);
Pra ficar mais legível:
Class classeTeste = Class.forName("teste");
Method metodoGetFrame = classeTeste.getMethod("getFrame");
Object instancia = classeTeste.newInstance();
JInternalFrame frm = (JInternalFrame) metodoGetFrame.invoke(instancia);
Criado 18 de janeiro de 2017
Ultima resposta 18 de jan. de 2017
Respostas 4
Participantes 2
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo