2010-09-04 23 views
5

son a la vez los métodos de comparación de cadenas por debajo considera igualcadena para la comparación en Java

public class TestString { 
    public static final String CONSTVAL="foo"; 

    public boolean testString1(String testVal) { 
     return testVal.equalsIgnoreCase(CONSTVAL); 
    } 

    public boolean testString2(String testVal) { 
     return CONSTVAL.equalsIgnoreCase(testVal); 
    } 
} 

o sería mejor tipo de comparación se ve favorecida por el otro?

Respuesta

18

Debe llamar a iguales en la constante ya que evita el riesgo de NullPointerException cuando testVal es nulo.

public boolean testString2(String testVal) { 
    return CONSTVAL.equalsIgnoreCase(testVal); 
} 
5

Una ventaja de este último es que no generará una excepción si testVal es nulo.

Espero que los resultados sean los mismos, aparte de eso.

0

Cuando un valor constante se compara con otro valor, es casi seguro que no tenga valor nulo.

En su caso,

new TestString().testString1(null); 

lanzará una excepción, mientras que,

new TestString().testString2(null); 

costumbre.

Pero este tipo de notación se podría considerar como a yoda condition.

2

A primera vista Estoy de acuerdo con @ Jon Skeet, pero luego me di cuenta de que CONSTVAL no es definitiva.

Si fue final, entonces testString2() es la forma más segura y mejor para probar la igualdad.

+0

Mi error, debería haber agregado final a la const val – Pram

+0

yo también eché de menos eso :) –