Execução de expressões com java

Fala galera!!

Estou com a seguinte dúvida:

É possível eu obter um resultado booleano de uma expressão representada em um String?


//Assim é claramente possível
boolean t = (((45<30)||(78>70))&&(("SE"=="SE")));

//Este é o caso
String se1 = "SE";
String se2 = "SE";
String x = "(((45<30)||(78>70))&&(("+se1+"=="+se2+")))";
boolean t = algumaCoisaExecutando(x); //Existe alguma classe... ou implementação do tipo?

Valeu!

quando você faz:

String x = “(((45<30)||(78>70))&&((”+se1+"=="+se2+&quot)))"

está na verdade criando uma String com o valor (((45<30)||(78>70))&&(("+se1+"=="+se2+&quot)))";

ou seja…nada será avaliado ai!!!você atribuiu simplesmente um valor a String…
Não entendi direito…o que pretende…:expressionless:

Use BeanShell http://www.beanshell.org/
Tem um cara lá no jar que vc pode usar assim:
Classpath


import bsh.EvalError;
import bsh.Interpreter;

uso


String x = "(((45<30)||(78>70))&&(("+se1+"=="+se2+")))"; //sua salada !!
Interpreter i = new Interpreter();
String resutado= (String) i.eval(x);
System.out.printf("Resultado %s",resultado);

Boa Sorte!!

Ops!!
Essa parada aí cara da comparação das Strings não tá legal não


se1==se2  <--- isso é igual a se1.hashcode() == se2.hashcode()

use sempre para string


se1.equals(s2);

[quote=hashcode]Ops!!
Essa parada aí cara da comparação das Strings não tá legal não


se1==se2  <--- isso é igual a se1.hashcode() == se2.hashcode()

[/quote]

hmm… mais ou menos… na verdade, se1 == se2 vai comparar o “endereco” a que as referencias se referem… em outras palavras, nao vai te falar simplesmente que os objetos apondados sao semanticamente iguais, mas sim se eles sao exatamente o mesmo objeto

Pode-se usar um prototype .clone() que a referências são ortogonais. Só há o mesmo address se o objeto é static.