Bom dia
Gostaria por favor de saber se tem como eu em tempo de execução criar ou apenas acessar a classe, meu objetivo é o seguinte tenho uma classe abstrata que contem métodos que são utilizados por herança em outras 7 classes diferentes…
Seriam cômodos de uma casa as classes concretas e a abstrata o interruptor de luz, que seria para ligar e desligar lâmpada, então eu queria utilizar isso em sockets, aonde eu enviaria o nome do comodo, quarto por exemplo e ele acessaria o metodo desligaLuz() ou statusLampada da classe para efetuar a ação, então queria utilizar isso para deixar o código mais eficiente.
Eu vi que tem reflection…
Cheguei a criar um trecho de código mas da mensagem de erro.
public void criaClasse(String nomeClasse, int opcao) {
String nome = "socket.casa.concreta.".concat(nomeClasse);
try {
Class classe = Class.forName(nome);
Interruptor objeto = (Interruptor) classe.newInstance();
switch (opcao) {
case 1:
((Interruptor) objeto).interruptor();
break;
case 2:
((Interruptor) objeto).getStatusLampada();
break;
}
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException e) {
e.printStackTrace();
}
}
Mensagem de erro da pilha
java.lang.InstantiationException: socket.casa.concreta.Quarto
at java.lang.Class.newInstance(Unknown Source)
at socket.casa.Casa.criaClasse(Casa.java:40)
at socket.casa.Casa.main(Casa.java:60)
Alguém poderia me ajudar por favor?
