Under The Hood de este mes se centra en la invocación y devolución de métodos dentro de la máquina virtual Java (JVM). Describe las cuatro formas en que se pueden invocar los métodos Java (y nativos), proporciona un ejemplo de código que ilustra las cuatro formas y cubre los códigos de bytes relevantes.
Invocación de método
El lenguaje de programación Java proporciona dos tipos básicos de métodos: métodos de instancia y métodos de clase (o estáticos). La diferencia entre estos dos tipos de métodos es:
Instance
Los métodos requieren una instancia antes de poder ser invocados, mientras que losclass
métodos no.Instance
los métodos utilizan un enlace dinámico (tardío), mientras que losclass
métodos utilizan un enlace estático (temprano).
Cuando la máquina virtual Java invoca un método de clase, selecciona el método a invocar en función del tipo de referencia del objeto, que siempre se conoce en tiempo de compilación. Por otro lado, cuando la máquina virtual invoca un método de instancia, selecciona el método a invocar en función de la clase real del objeto, que solo puede conocerse en tiempo de ejecución.
La JVM utiliza dos instrucciones diferentes, que se muestran en la siguiente tabla, para invocar estos dos tipos diferentes de métodos: invokevirtual para instance
métodos e invokevirtual para class
métodos.