Qual a maneira mais elegante de fazer isso?

olá amigos

estou desenvolvendo um componente para utilizar em workflows e me deparei com a seguinte situação:

O usuário do componente vai digitar 2 valores, em uma combo vai escolher o tipo desses valores(String, Integer, Double) e em outra combo vai escolher a comparação que ele quer fazer com esses valores(=,!=,>,<,>=,<=). Como posso fazer isso sem fazer um monte de if? (tinha feito um estrategy mas achei que não ficou bom)…

Enfim como vocês fariam isso?

grato

Uma espécie de Command:

public interface Operacao {
	public boolean executar();
}

[code]public class Diferente implements Operacao {

private Object value1;
private Object value2;

public Diferente(Object value1, Object value2) {
	this.value1 = value1;
	this.value2 = value2;
}

public boolean executar() {
	return (!value1.equals(value2));
}

}
[/code]

[code]public class Igual implements Operacao {

private Object value1;
private Object value2;

public Igual(Object value1, Object value2) {
	this.value1 = value1;
	this.value2 = value2;
}

public boolean executar() {
	return (value1.equals(value2));
}

}
[/code]

public class Teste { public static void main(String[] args) { // usuário escolheu Igual Class operacao = Igual.class; // usuário escolheu Double Class tipo = Double.class; // usuário digitou dois valores String value1 = "15"; String value2 = "25"; try { Object value1Double = tipo.getConstructor(new Class[] { String.class }) .newInstance(new Object[] { value1 }); Object value2Double = tipo.getConstructor(new Class[] { String.class }) .newInstance(new Object[] { value2 }); Operacao operacaoObj = (Operacao) operacao.getConstructor(new Class[] { Object.class, Object.class }) .newInstance(new Object[] { value1Double, value2Double }); System.out.println(operacaoObj.executar()); } catch (Exception e) { e.printStackTrace(); } } }

você pode usar CajuScript ou outros.