2010-02-26 22 views

Respuesta

2

Parece que la función solo tiene que devolver 3 valores diferentes según si a es menor, igual o mayor que b. Ya existe un operador en maravilloso que hace esto:

a <=> b 

Los valores de retorno son -1, 0 y 1. Tal vez lo mejor que puede hacer es refactorizar el código para utilizar este operador en lugar de xMethod, si eso es posible.

Por supuesto, si los valores precisos 1, 2 y 3 son importantes y no solo 3 valores distintos, entonces no puede hacer esto.

+0

@Mark Byers - Bien, ¿cómo se verá mi método si cambio mis valores devueltos a -1, 0, 1? muchas gracias –

+0

return (a <=> b)? –

+0

@Sapo: Podrías hacer eso, o podrías eliminar completamente el método xMétodo. –

0

¿Qué tal: return (a <=> b) + 2

+3

Esto asigna '-1, 0, 1' a' 1, 2, 3', pero necesita que vaya '1, 3, 2'. Puedes calcular la fórmula para que obtenga los valores que quiere, pero no creo que valga la pena la complicación. – polygenelubricants

0

Si quita las dos apariciones de número entero de la firma, se puede llamar al método con los parámetros para los que se define <.

E.g.

x.xMethod assert (1, 2) == 1
aserción x.xMethod ("2", "1") == 2
x.xMethod assert (2.0, 2.0) == 3

1

Sólo para ampliar la respuesta de la marca:

protected int xMethod (Integer a, Integer b) { 
    switch (a <=> b) { 
     case -1: 1; break 
     case 1: 2; break 
     case 0: 3; break 
    } 
} 

Sin embargo, usted tiene que preguntarse si este método tiene ningún valor. Si la persona que llama se puede cambiar para aceptar -1, 0, 1, entonces el método no tiene ninguna razón para existir.