Colección de citas famosas - Diccionario de frases chinas - ¿Qué significa la declaración "public int compareTo(Object b)" en Java? El código fuente es el siguiente (consulte el suplemento de preguntas):

¿Qué significa la declaración "public int compareTo(Object b)" en Java? El código fuente es el siguiente (consulte el suplemento de preguntas):

La función de este método es comparar los atributos de tiempo de los dos objetos Personas. Si son iguales, devuelve 0, de lo contrario devuelve la diferencia entre los atributos de tiempo del objeto Personas actual y el entrante. La gente se opone.

Personalmente, creo que este método no está bien escrito. Porque la segunda línea convierte el Objeto b en Personas, es decir, el parámetro entrante debe ser un objeto de Personas o una subclase. La firma del método actual puede pasar cualquier objeto. Si se pasa un objeto de subclase que no sea Personas o Personas, se producirá una excepción de conversión.

Así que creo que este método debería ser public int compareTo(People p){...}

De acuerdo con la especificación de escritura de Java, creo que el método de llamada de b.time no Genial, se debe agregar un método getter para el atributo de tiempo. Reemplace b.time con b.getTime()

Además, alguien dijo que se puede pasar cualquier tipo al Objeto b. Creo que esto no es del todo correcto. De hecho, esto es cierto para los tipos de objetos. Porque los objetos en Java son todos subclases de Object. Pero para los 8 tipos básicos (int, double, boolean, float, char, byte, long, short), la asignación directa de objetos solo se puede realizar en entornos JDK5 y superiores, porque JDK5 ha agregado un elemento llamado autoboxing que puede automáticamente. envuelva los tipos de datos básicos en las clases contenedoras correspondientes.