Buenas, para quien revise este ejercicio algunos comentarios.
- Al tener que realizar comparaciones de dos maneras distintas, podríamos pensar en usar la interface Comparator, explicada en la entrega CU00918C del curso, pero como en esta entrega no se ha explicado aún hay que hacerlo bien creando dos clases distintas, bien con algún artificio (como se hace en este caso) o bien con otro método (como se hace en
https://aprenderaprogramar.com/foros/index.php?topic=5704.0) o de otra manera.
- Para resolver este ejercicio podemos dar por bueno un artificio como el atributo opcion en la clase Persona, aunque en un caso real esto no sería lógico, ya que un compareTo define un orden natural en base a un único criterio, no en base a diferentes criterios. Cuando se tuvieran múltiples criterios usaríamos la interface Comparator.
- De resto el código parece funcionar bien, aunque desde mi punto de vista abusa de atributos y métodos estáticos, que en general no son indicativos de un buen diseño.
Salu2