Del javadoc de Calendar.before(Object when)
:Calendar.before (Object when), why Object?
Devuelve si este calendario representa un tiempo anterior al tiempo representado por el objeto especificado. Este método es equivalente a:
compareTo(when) < 0
si y solo si es una instancia de Calendar. De lo contrario, el método devuelve falso.
¿Por qué acepta un objeto si, cuando alguien pasa algo que no es una instancia de Calendar, devuelve falso? ¿Por qué no solo aceptar una instancia de Calendar? Esto me mantuvo mirando por resultados incorrectos en una funcionalidad por bastante tiempo.
+1. Tenga en cuenta que el objeto Date (cuyo diseño emite Calendar debía abordar) tiene un método before que no toma un Object (sino otra Date). No es una API particularmente consistente. – Thilo
Por "vivir con" ¿te refieres a volcar a favor de Joda Time? – ILMTitan