Boa noite! Analisando a aula referente a esse tópico surgiu uma dúvida:
O instrutor fala que : "precisamos de uma instancia de class do tipo controle para conseguir retorna o método da classe controle com método."
Quanto pensamos em "instanciar" eu entendo que eu vou ter um objeto guardado em um espaço de memória , logo, compreendo que só "instanciamos" um objeto do tipo controle quando a partir do construtor padrão chamamos o método "new instance". Para exemplificar melhor nossa dúvida, vou colocar o meu ponto de vista e entendimento de cada linha do método main .
Class<?> controleClasse = Class.forName("br.com.alura.alurator.playground.controle.Controle");
Aqui eu retorno um objeto (NÃO instanciado) Class do tipo controle (como se fosse uma carta curinga) Constructor<?> construtorPadrao = controleClasse.getDeclaredConstructor(); Aqui no constructor , eu pego o meu objeto .class criado e consigo retornar o construtor dele
Object controle=construtorPadrao.newInstance();
>>aqui Sim! eu coloco esse objeto, essa classe, em espaço de memoria
Method m = controleClasse.getMethod("metodoControle2",String.class);
>>aqui eu não utilizo uma instancia, mas sim um objeto do tipo class para fazer referencia aos metodos do tipo do mesmo
Object retorno = m.invoke(controle,"Pintassilgo do Agreste");
>>aqui eu "instancio o methodo"
System.out.println(retorno);
Só gostaria de entender, essa diferenca entre o class e o objeto instanciado que pela forma que foi falado não ficou muito claro