Queria agradecer por terem olhado e queria acrescentar mais algumas informações
O jexpel não utiliza reflexão para executar as expressões, elas são compiladas em classes java via asm. Por ex.:
a seguinte expressão: user.name seria transformada em uma classes assim:
public class Exp_1712536127 implements Expression {
public Object get(Object obj) throws Exception {
return obj.getUser().getName(); // a pripriedade é recuperada sem cast, recursos do bytecode
}
public void set(Object obj, Object value) throws Exception {
obj.getUser().setName((String)value); // aqui faz o cast
}
}
Neste caso é uma expressão que permite leitura e escrita, mas há casos que só permite leitura como na expressão:
dtInicio + 10243600*1000
Esta expressão seria compilada como:
new Date(obj.getDtInicio().getTime() + 864000000L)
obs.: eu implementei a soma para datas. Um recurso muito útil que eu já precisei em projetos para validar datas com expressões"
E caso a propriedade seja pública e não tenha método get ele a acessa diretamente
As conversões de tipos de inteiro para long, double, string já são todas feitas
Espero que gostem.
[]s