Porque meta-programação deve ser fácil.

Constructor

Manipulacão de Construtor usando o Mirror.

Refletindo

Refletindo um construtor pelos argumentos (retornará null se não for encontrado):
Class<T> clazz;
Constructor<T> c =
new Mirror().on(clazz).reflect().constructor()
                       
.withArgs(String.class, Object.class);
Reflectindo o único construtor de uma classe (lançará uma exceção se encontrar mais de um contrutor)
Class<T> clazz;
Constructor<T> m =
new Mirror().on(clazz).reflect().constructor().withAnyArgs();
Refletindo todos os construtores de uma classe (retornará uma lista vazia caso nada seja encontrado):
Class<T> clazz;
List<Constructor<T>> l =
new Mirror().on(clazz).reflectAll().constructors();
Refletindo todos os construtores de uma classe que sejam aceitos por um Matcher<Constructor> (retornará uma lista vazia caso nada seja encontrado):
Class<T> clazz;
List<Constructor<T>> l =
new Mirror().on(clazz).reflectAll()
                                      
.constructors().matching(new SeuProprioMatcher());
Você também pode mapear seus construtores para outros tipos:
Class<T> clazz;
List<String> l =
new Mirror().on(clazz).reflectAll()
                   
.constructors().mappingTo(new SeuProprioMapperDeConstrutorParaString());

Invocando Construtores

Invocando um construtor:
Class<T> clazz;
T t =
new Mirror().on(clazz).invoke().constructor().withoutArgs();
Você também pode passar um java.lang.reflect.Constructor:
Constructor<T> umConstrutor;
Class<T> clazz;
T t =
new Mirror().on(clazz).invoke().constructor(umConstrutor).withArgs(valor1, valor2);

Ignorando Construtores

Com o Mirror, você pode ignorar completamente construtores para criar instancias:
Class<T> clazz;
T t =
new Mirror().on(clazz).invoke().constructor().bypasser();
Note que esse comportamento só é suportado pelas VMs suportadas pelo projeto Objenesis. Dê uma olhada em http://code.google.com/p/objenesis/wiki/ListOfCurrentlySupportedVMs .