Programmēšana

Kā Java virtuālā mašīna apstrādā metodes izsaukšanu un atgriešanu

Šī mēneša Zem kapuces koncentrējas uz metožu izsaukšanu un atgriešanos Java virtuālajā mašīnā (JVM). Tajā aprakstīti četri veidi, kā var izmantot Java (un vietējās) metodes, sniegts koda paraugs, kas ilustrē četrus veidus un aptver attiecīgos baitkodus.

Metodes izsaukšana

Java programmēšanas valoda nodrošina divus pamatmetožu veidus: gadījumu metodes un klases (vai statiskās) metodes. Atšķirība starp šiem diviem metožu veidiem ir:

  1. Instance Metodes prasa instanci, pirms tās var izmantot klasē metodes nav.
  2. Instance metodes izmanto dinamisku (vēlu) saistīšanu, turpretī klasē metodes izmanto statisko (agrīno) saistīšanu.

Kad Java virtuālā mašīna izsauc klases metodi, tā izvēlas metodi, kuru izsaukt, pamatojoties uz objekta atsauces tipu, kas vienmēr ir zināms sastādīšanas laikā. No otras puses, kad virtuālā mašīna izsauc instances metodi, tā izvēlas izsaukšanas metodi, pamatojoties uz faktisko objekta klasi, kas var būt zināma tikai izpildes laikā.

JVM izmanto divas dažādas instrukcijas, kas parādītas šajā tabulā, lai izmantotu šīs divas dažādas metodes: invokevirtuāls priekš instancē metodes un invokestātisks priekš klasē metodes.

$config[zx-auto] not found$config[zx-overlay] not found