Προγραμματισμός

Πώς η εικονική μηχανή Java χειρίζεται τη μέθοδο επίκλησης και επιστροφής

Αυτό το μήνα Κάτω από την κουκούλα επικεντρώνεται στην επίκληση μεθόδου και στην επιστροφή μέσα στην εικονική μηχανή Java (JVM). Περιγράφει τους τέσσερις τρόπους με τους οποίους μπορούν να χρησιμοποιηθούν οι μέθοδοι Java (και εγγενείς), δίνει ένα δείγμα κώδικα που απεικονίζει τους τέσσερις τρόπους και καλύπτει τους σχετικούς bytecodes.

Επίκληση μεθόδου

Η γλώσσα προγραμματισμού Java παρέχει δύο βασικά είδη μεθόδων: μεθόδους παρουσίας και μεθόδους κλάσης (ή στατικές). Η διαφορά μεταξύ αυτών των δύο ειδών μεθόδων είναι:

  1. Παράδειγμα Οι μέθοδοι απαιτούν ένα στιγμιότυπο πριν μπορούν να χρησιμοποιηθούν, ενώ τάξη οι μέθοδοι δεν.
  2. Παράδειγμα οι μέθοδοι χρησιμοποιούν δυναμική (καθυστερημένη) δέσμευση, ενώ τάξη οι μέθοδοι χρησιμοποιούν στατική (πρώιμη) δέσμευση.

Όταν η εικονική μηχανή Java επικαλείται μια μέθοδο κλάσης, επιλέγει τη μέθοδο που θα επικαλεσθεί με βάση τον τύπο της αναφοράς αντικειμένου, ο οποίος είναι πάντα γνωστός κατά το χρόνο μεταγλώττισης. Από την άλλη πλευρά, όταν η εικονική μηχανή επικαλείται μια μέθοδο παρουσίας, επιλέγει τη μέθοδο που θα επικαλεσθεί βάσει της πραγματικής κλάσης του αντικειμένου, η οποία μπορεί να είναι γνωστή μόνο κατά το χρόνο εκτέλεσης.

Το JVM χρησιμοποιεί δύο διαφορετικές οδηγίες, που εμφανίζονται στον παρακάτω πίνακα, για να επικαλεστεί αυτά τα δύο διαφορετικά είδη μεθόδων: invokevirtual Για παράδειγμα μεθόδους και invokestatic Για τάξη μεθόδους.