Tento měsíc Under The Hood se zaměřuje na vyvolání metody a návrat uvnitř virtuálního stroje Java (JVM). Popisuje čtyři způsoby, jak lze vyvolat metody Java (a nativní), poskytuje ukázku kódu, který ilustruje čtyři způsoby, a pokrývá příslušné bytecodes.
Vyvolání metody
Programovací jazyk Java poskytuje dva základní druhy metod: instance metody a třídy (nebo statické) metody. Rozdíl mezi těmito dvěma druhy metod je:
Instance
metody vyžadují instanci, než je lze vyvolat, zatímcotřída
metody ne.Instance
metody používají dynamickou (pozdní) vazbu, zatímcotřída
metody používají statickou (časnou) vazbu.
Když virtuální stroj Java vyvolá metodu třídy, vybere metodu k vyvolání na základě typu odkazu na objekt, který je vždy znám v době kompilace. Na druhou stranu, když virtuální stroj vyvolá metodu instance, vybere metodu k vyvolání na základě skutečné třídy objektu, která může být známa pouze za běhu.
K vyvolání těchto dvou různých druhů metod používá JVM dvě různé instrukce uvedené v následující tabulce: invokevirtual pro instance
metody a invokestatický pro třída
metody.