Mirror DSL: facilitando o uso da API de reflection
No último domingo foi feito o primeiro release público do projeto Mirror (versão 1.2).
O Mirror é um projeto que tem por objetivo facilitar o uso da Java Reflection API, removendo boa parte da burocracia (como as diversas checked exceptions que são lançadas) e utilizando uma DSL para melhorar a legibilidade do código.
Com essa remoção de burocracia e a DSL, é possível transformar o seguinte código:
Field toSet = null; for (Field f : target.getClass().getDeclaredFields()) { if (f.getName().equals("field")) { toSet = f; } } if (toSet != null && ((toSet.getModifiers() & Modifier.STATIC) == 0) && ((toSet.getModifiers() & Modifier.FINAL) == 0)) { toSet.setAccessible(true); toSet.set(target, value); }
em algo mais legível e expressivo:
Mirror.on(target).set().field("fieldName").withValue(value);
Atualmente o Mirror possui suporte para lidar com as operações reflectivas mais comuns (como instanciar objetos, invocar métodos, ler ou escrever atributos, etc). Ele foi desenvolvido por Adriano Almeida, Diego Feitosa e eu, todos consultores/instrutores aqui da Caelum, enquanto enfretavamos problemas comuns no dia a dia.
Esperamos que possa ser útil para vocês também!