En Java, utilizo una clase en la que algunos campos pueden ser null
. Por ejemplo:¿Qué hacer con campos nulos en compare()?
class Foo {
String bar;
//....
}
Quiero escribir un BarComparator para esta clase,
private static class BarComparator
implements Comparator<Foo> {
public int compare(final Foo o1, final Foo o2)
{
// Implementation goes here
}
}
¿Hay una manera estándar de tratar con el hecho de que cualquiera de o1
, o2
, o1.bar
, o2.bar
puede haber null
, sin escribir muchos anidados if
... else
?
¡Salud!
Fuera de tema Sé, pero ¿cuál es el motivo para preferir MIN/MAX_VALUE sobre -/+ 1? –
Perdón por la demora en responder. Es para asegurar que tengamos la desigualdad triangular. Para a> b> c, a.compareTo (b) + b.compareTo (c) <= a.compareTo (c). No es que a nadie le importe ... –
Aún puede arrojar una 'NullPointerException', si o1/o2 es nulo. ¿Cómo se debe tratar el o1/o2 como nulo? OP mencionado: o1, o2, o1.bar, o2.bar puede ser nulo. ¿O es parte de un contrato de comparación: la comparación de nulos debería arrojar un NPE? – Daniel