Programavimas

Kaip „Java“ virtuali mašina tvarko metodo iškvietimą ir grąžinimą

Šio mėnesio Po gaubtu daugiausia dėmesio skiriama metodo iškvietimui ir grįžimui į „Java“ virtualiąją mašiną (JVM). Jame aprašomi keturi „Java“ (ir vietinių) metodų panaudojimo būdai, pateikiamas kodo pavyzdys, kuris iliustruoja keturis būdus ir aprėpia atitinkamus baitekodus.

Metodo iškvietimas

„Java“ programavimo kalba pateikiami du pagrindiniai metodų tipai: egzempliorių metodai ir klasės (arba statiniai) metodai. Skirtumas tarp šių dviejų rūšių yra:

  1. Instancija metodai reikalauja egzemplioriaus, kad juos būtų galima naudoti, o klasė metodai to nedaro.
  2. Instancija metodai naudoja dinaminį (vėlyvąjį) įrišimą, o klasė metodai naudoja statinį (ankstyvąjį) įrišimą.

Kai „Java“ virtuali mašina iškviečia klasės metodą, ji pasirenka metodą, kurį reikia iškviesti, remdamasi objekto nuorodos tipu, kuris visada žinomas kompiliavimo metu. Kita vertus, kai virtualioji mašina iškviečia egzempliorių metodą, ji parenka iškviečiamą metodą remdamasi tikra objekto klase, kuri gali būti žinoma tik vykdymo metu.

JVM naudoja dvi skirtingas instrukcijas, pateiktas šioje lentelėje, norėdamas pasinaudoti šiais dviem skirtingais metodais: invokevirtualus dėl instancija metodai ir invokestatic dėl klasė metodai.