Dúvida, Algo do tipo "Variável recebendo um operador" !?

3 respostas
L

Me deparei com a seguinte situação exemplo:

boolean condicao = true;
		
		if(condicao)
		{
			if(1 > 2)
			{
				//...
			}
		}
		else
		{
			if(1 < 2)
			{
				//...
			}
		}

Até ai blz, mas aí surgiu uma dúvida onde para mim se existisse, iria resumir esse código muito bem:

boolean condicao = true;
		
		if(1 ((condicao) ? > : <) 2)
		{
			//.....
		}

sei que este código não existe, algo do tipo uma variável recebendo um operador hehe, mas existe algo no java parecido com isso que resumiria o primeiro código citado?
não sei se to pirando muito ahahh.

3 Respostas

al.barbosa

Veja se desta forma resume o código como você quer:

boolean condicao = true;
if(condicao ? (1>2) : (1<2)){
   //...
}
L

al.barbosa:
Veja se desta forma resume o código como você quer:

boolean condicao = true;
if(condicao ? (1>2) : (1<2)){
   //...
}

Sim isso resume, na verdade foi um código exemplo né, digamos que os valores 1 ou 2 viriam de objetos com vários getters, fircaria uma condição extensa em uma linha.
A dúvida mesmo seria uma condição onde definiria qual operador utilizar dentro de outra condição, se é que me entende? ehhe
é uma dúvida que praticamente sei que a resposta: “não existe isso”, seria mais como uma idéia que para mim iria facilitar, não sei se você concorda comigo?

ViniGodoy

Você pode fazer isso com interfaces e usando o padrão Strategy. É rebuscado, mas se sua condição fosse mais complexa, talvez valesse a pena.
Veja:

public interface Comparison {
    boolean compare(int obj1, int obj2);
}

public class Less implements Comparison {
     @Override
     public boolean compare(int obj1, int obj2) {
         return obj1 &lt; obj2;
     }
}

public class More implements Comparison {
     @Override
     public boolean compare(int obj1, int obj2) {
         return obj1 &gt; obj2;
     }
}
O código ficaria assim:
boolean condicao = true;  
Comparison c = condicao ? new More() : new Less();
if(c.compare(1,2)) {  
       //...  
}
Criado 19 de julho de 2012
Ultima resposta 19 de jul. de 2012
Respostas 3
Participantes 3