Estou dando uma olhada, e vi que é possivel, criar classes dinamicas, porem a minha duvida é se é possivel criar uma classe similar, porem com retornos diferentes, ou isso seria apenas um sonho ??
por exemplo
public class Teste {
public void bla();
public void foo();
}
e entao usar algo como
createDinamico(Teste.class).bla().foo();
ou seja, o retorno de bla() mudaria de void para a propria classe… isso é possivel ?
Eu já cheguei a mexer no CGLIB, mas pra fazer coisa simples, que era acrescentar uma implementação padrão de uma interface a várias classes. Meio que fácil, porque o compilador não me proíbe de fazer um cast pra qualquer interface (mesmo que a classe não a implemente).
Agora, mesmo que você consiga mudar o retorno de um método (não acho que seja impossível), ainda assim o compilador irá reclamar da atribuição de variável; e você só terá a opção de invocar o método via API de reflection.
É que estou usando proxy para montar criteira… ate agora a montagem esta assim:
Criteria<Telefone> query = Criteria
.forClass(Telefone.class)
.setFirstResult(0)
.setMaxResults(20);
Restriction<Telefone> restrict = query.addRestriction();
restrict.isEquals(55).getDdi();
restrict.isBetween(83, 85).getDdd();
query.addOrder().ascIgnoreCaseBy().getNumero();
//aqui vem a lisa dos telefones do ddi 55 com ddd entre 83 a 85
List<Telefone> telefones = genericDao.list(query);
//poderia ter usado genericDao.find(query); para encontra o primeiro
eu gostaria de poder trocar a ordem entre o isEqual e o getDdi por exemplo… o ideal seria assim