Não acompanhei o desenvolvimento, mas como trabalho com toda a equipe aqui na Caelum, conheço o trabalho de todos: Jonas Abreu, Adriano Almeida e Diego Feitosa.
Desta equipe excelente só poderia sair algo assim bem legal!
Muito bom. A flexibilidade do código certamente é maior do que o código procedural, além de mais simples de usar do que a própria API de Reflection nua e crua.
No entanto, esse ‘syntatic sugar’ torna-se mais verboso. Cabe ai a analisar os trade-offs e ver se vale mesmo a pena entrar no purismo do OO ou simplesmente criar um código procedual totalmente straight forward (direto/objetivo).
Aproveitando o assunto, gostaria de tirar uma dúvida, é uma dificuldade que tambem tenho na API de Reflection.
Tem como chamar o metodo liga da classe carro sem ter que instancia o obj carro dentro da classe teste, poderia até instaciar mas pegando esse carro por uma variavel String?
Carro obj = new Carro();
Gostaria de passar esse “Carro” atravez de uma variavel String como paramentro de um metodo…
Teste
import net.vidageek.mirror.Mirror;
public class Teste {
public static void main(String[] args) {
Carro obj = new Carro();
Mirror.on(obj).invoke().method("liga").withoutArgs();
}
}
Carro
public class Carro {
public void liga() {
System.out.println("Ligado");
}
}
Valew Daniel! Resolveu, era isso mesmo que eu precisava.
Mikhas, esse exemplo é um material de estudo, não faz sentido mesmo mas é o que encontrei pra tentar explicar minha dúvida.
Não conhecia esse “newInstance();”. Valew.
Eu acho que um invoke e set que já recebem o campo/método como parâmetro são o ideal. No caso de construtor eu acho que seria mais simples ter um método “create” que já receberia os parâmetros do contrutor.