[Java] [clase de uso común] Aprendizaje del código fuente de la clase base del objeto

Resumen del código fuente:

Muchos son métodos nativos, escritos detrás de C ++

 

No hay una descripción sobre el constructor, la construcción sin parámetros proporcionada por el compilador predeterminado

https://blog.csdn.net/dmw412724/article/details/81477546

Ah, ¿por qué sigue siendo nativo? La única conclusión que se puede extraer en la actualidad es que todos los métodos de modificación nativa se implementan mediante JNI llamando a C ++ o código C

 

Obtenga objetos de clase para reflexionar y leer archivos de configuración

public  final  native Class <?> getClass ();

 

Obtenga el valor hash del objeto, similar al valor de dirección de C, porque se está ejecutando en la JVM, por lo que no es el valor de dirección de memoria real, es virtual

 -Se puede usar para ayudar a determinar si dos objetos son iguales

public  native  int hashCode ();

 

Juicio igualitario original, tome directamente la dirección para comparar

    public  boolean equals (Object obj) {
         return ( this == obj); 
    }

 

Método de clonación, devuelve un objeto copiado, además del segundo método para obtener objetos de la nueva manera

-Tenga en cuenta que las excepciones de clonación no son compatibles, este método debe implementar la interfaz clonable antes de que pueda usarse

 Objeto nativo protegido clone () arroja CloneNotSupportedException;

 

El método predeterminado de toString

- Se devuelve el nombre completo de la clase a la que pertenece el objeto y el valor hash convertido a hexadecimal.

public String toString () {
         return getClass (). getName () + "@" + Integer.toHexString (hashCode ()); 
    }

 

Utilizado para el desarrollo de subprocesos múltiples, notificación de significado del método

[Notifique a un subproceso que espera que el objeto regrese del método de espera y devuelva el bloqueo que debe adquirirse para el objeto]

    público  nulo nativo final  notificar (); 

 [Notificar a todos los hilos que esperan en el objeto]

    public  final  native  void notifyAll ();

[Haga que el objeto espere dentro del tiempo del valor del parámetro, devuelva horas extras o sea notificado dentro del tiempo de espera, ¡preste atención! El método de espera liberará el bloqueo del objeto]

 público  final  espera vacía nativa  ( tiempo de espera largo ) produce InterruptedException;

[Mayor precisión del tiempo de espera]

public  final  void wait ( tiempo de espera largo , int nanos) produce InterruptedException {
         if (timeout <0 ) {
             throw  new IllegalArgumentException ("el valor de tiempo de espera es negativo" ); 
        } 

        if (nanos <0 || nanos> 999999 ) {
             arrojar  nueva IllegalArgumentException (
                                 "valor de tiempo de espera de nanosegundos fuera de rango" ); 
        } 

        if (nanos> 0 ) { 
            tiempo de espera ++ ; 
        }

        esperar (tiempo de espera); 
    }

[Ingrese el estado de espera hasta que otros hilos lo notifiquen o lo interrumpan antes de regresar]

public  final  void wait () arroja InterruptedException { 
        wait ( 0 ); 
    }

 

[Método ejecutado cuando se destruye el objeto]

el  vacío protegido finalize () arroja Throwable {}

 

Supongo que te gusta

Origin www.cnblogs.com/mindzone/p/12715460.html
Recomendado
Clasificación