Στοιχεία δεδομένων τμημάτων κώδικα διερευνητή

Τα στοιχεία δεδομένων ενός τμήματος κώδικα είναι τα ονόματα και τα είδη των στοιχείων δεδομένων στα οποία ο πρωτογενής κώδικας του τμήματος μπορεί να παραπέμπει.

Η προδιαγραφή των στοιχείων δεδομένων είναι προαιρετική. Ένα τμήμα κώδικα μπορεί να περιέχει περισσότερα του ενός στοιχεία δεδομένων, αλλά κάθε είδος στοιχείου μπορεί να εμφανίζεται μόνο μία φορά.

Ένα στοιχείο δεδομένων συμπεριλαμβάνει τις ακόλουθες ιδιότητες:
Ιδιότητα Περιγραφή
Είδος δεδομένων Υποχρεωτική. Τα διαθέσιμα είδη αναγράφονται στον ακόλουθο πίνακα.
Όνομα Υποχρεωτική. Πρέπει να προσδιορίζεται ένα έγκυρο όνομα μεταβλητής Java. Ο πρωτογενής κώδικας τμήματος διερευνητή θα χρησιμοποιεί το ίδιο όνομα για να παραπέμπει στα υποδεικνυόμενα δεδομένα.
Στον παρακάτω πίνακα παρουσιάζονται και περιγράφονται τα είδη δεδομένων που είναι διαθέσιμα από τη λειτουργία επεξεργασίας Probekit.
Είδος δεδομένων είδος Περιγραφή
className Σειρά χαρακτήρων

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

Παράδειγμα: org/eclipse/tptp/SomeClass

methodName Σειρά χαρακτήρων

Για διερευνητές μεθόδων, το όνομα της ελεγχόμενης μεθόδου, σε εσωτερική μορφή. Για διερευνητές σημείων κλήσης, το όνομα της καλούμενης μεθόδου.

Οι λειτουργίες κατασκευής έχουν όνομα μεθόδου <init> και οι στατικές λειτουργίες απόδοσης αρχικών τιμών σε κλάσεις έχουν όνομα μεθόδου <clinit>.

methodSig Σειρά χαρακτήρων

Το όρισμα μεθόδου και η υπογραφή του είδους επιστροφής, σε εσωτερική μορφή. Δεν είναι έγκυρο για τμήματα κώδικα staticInitializer.

Παράδειγμα: (Ljava/lang/String;)I

thisObject Object

Το αντικείμενο this (για μεθόδους χρήσης) που μεταβιβάστηκε στην ελεγχόμενη μέθοδο. Δεν είναι έγκυρο για τμήματα κώδικα staticInitializer.

Το thisObject έχει την τιμή null για στατικές μεθόδους, για τμήματα κώδικα entry που εφαρμόζονται σε λειτουργίες κατασκευής και για τμήματα κώδικα exit που εφαρμόζονται σε λειτουργίες κατασκευής, όταν αυτές εμφανίζουν εξαίρεση.

args Object[]

Ένας πίνακας παραπομπών σε Object που αναπαριστά το σύνολο των ορισμάτων στην ελεγχόμενη μέθοδο. Στον πίνακα αυτό υπάρχει ένα στοιχείο για κάθε όρισμα στη μέθοδο (χωρίς να προσμετράται το όρισμα this). Τα ορίσματα που είναι στοιχειώδη είδη περικλείονται σε προσωρινά αντικείμενα του κατάλληλου είδους παραπομπής, για παράδειγμα: Integer αντί για int. Εάν η μέθοδος δεν χρησιμοποιεί ορίσματα, το μέγεθος του πίνακα Object[] θα είναι μηδενικό.

Θα πρέπει να σημειωθεί ότι οι λειτουργίες κατασκευής για μη στατικές εσωτερικές κλάσεις έχουν ένα κρυφό όρισμα σε κάθε επίπεδο "inner", συνεπώς ο πίνακας ορισμάτων θα περιέχει περισσότερα στοιχεία από όσα εμφανίζονται στον πρωτογενή κώδικα. Δεν είναι έγκυρο για τμήματα κώδικα staticInitializer.

returnedObject Object Μια παραπομπή στο αντικείμενο που επιστρέφεται. Το είδος αυτό είναι διαθέσιμο μόνο σε τμήματα κώδικα exit και afterCall. Εάν η ελεγχόμενη μέθοδος επιστρέφει τιμές στοιχειώδους είδους, η τιμή επιστροφής συνδέεται με ένα προσωρινό αντικείμενο του κατάλληλου είδους παραπομπής. Εάν η μέθοδος είναι void (δεν επιστρέφει κάποια τιμή) ή εάν τερματίζεται με εξαίρεση, τότε το returnedObject έχει την τιμή null.
exceptionObject Throwable Μια παραπομπή στο αντικείμενο εξαίρεσης που προκύπτει. Το είδος αυτό είναι διαθέσιμο μόνο σε τμήματα κώδικα catch και exit. Εάν η μέθοδος τερματίζεται κανονικά, τότε το exceptionObject θα έχει την τιμή null.
isFinally λογική τιμή Ένας ενδείκτης που δηλώνει αν το τμήμα κώδικα κλήθηκε από συνθήκη finally (true) ή από συνθήκη catch (false). Έγκυρο μόνο σε τμήματα κώδικα catch.
staticField (ποικίλλει) Το αντικείμενο στο οποίο πραγματοποιείται παραπομπή από το στατικό πεδίο. Έχει το ίδιο είδος με αυτό που δηλώθηκε στο αντικείμενο staticField. Έγκυρο μόνο όταν ο διερευνητής δηλώνει ένα αντικείμενο staticField. (Ανατρέξτε στην ενότητα Ένα παράδειγμα διερευνητή staticField και staticInitializer.) Δεν είναι έγκυρο για διερευνητές σημείων κλήσης.
classSourceFile Σειρά χαρακτήρων Οι πληροφορίες ονόματος του αρχείου πρωτογενούς κώδικα που είναι διαθέσιμες από τα γνωρίσματα εντοπισμού και διόρθωσης σφαλμάτων του αρχείου class. Εάν δεν υπάρχουν πληροφορίες πρωτογενούς κώδικα, τότε το classSourceFile έχει την τιμή null. Για τη Java, η τιμή αυτή είναι συνήθως απλά το όνομα αρχείου, χωρίς τις πληροφορίες διαδρομής. Δεν είναι έγκυρο για διερευνητές σημείων κλήσης.
methodNames Σειρά χαρακτήρων

Μια κωδικοποιημένη λίστα ονομάτων και υπογραφών μεθόδων. Η σειρά των μεθόδων στη λίστα αυτή είναι ίδια με τη σειρά των μεθόδων του είδους methodLineTables και είναι ίδια με τη σειρά που παρουσιάζεται στο στοιχείο δεδομένων methodNumber. Η λίστα αυτή δεν συμπεριλαμβάνει τα ονόματα των μεθόδων που έχουν εισαχθεί στην κλάση από το Probekit.

Η σειρά χαρακτήρων methodNames αποτελείται από ένα ή περισσότερα ονόματα μεθόδων και υπογραφές, που διαχωρίζονται μεταξύ τους με το σύμβολο "συν" (+). Οι υπογραφές μεθόδων είναι σε εσωτερική μορφή Java. Για παράδειγμα, μία κλάση με δύο μεθόδους, μια προεπιλεγμένη λειτουργία κατασκευής, μια μέθοδο run που λαμβάνει ένα String και επιστρέφει int, έχει τη σειρά χαρακτήρων methodNames: <init>()V+run(Ljava/lang/String;)I

Δεν είναι έγκυρο για διερευνητές σημείων κλήσης.

methodLineTables Σειρά χαρακτήρων Μια κωδικοποιημένη λίστα αριθμών γραμμής που αντιστοιχούν σε κάθε εκτελέσιμη μονάδα κώδικα της κλάσης. Η λίστα δεν συμπεριλαμβάνει εκτελέσιμες μονάδες που έχουν εισαχθεί στην κλάση από το Probekit. Μια εξήγηση της κωδικοποίησης δίνεται στην ενότητα Η μορφή της σειράς χαρακτήρων methodLineTables. Δεν είναι έγκυρο για διερευνητές σημείων κλήσης.
methodNumber Ακέραιος αριθμός Ο αριθμός δείκτη στον πίνακα methodNames για τη μέθοδο στην οποία έχει εισαχθεί το τμήμα κώδικα διερευνητή. Δεν είναι έγκυρο για διερευνητές σημείων κλήσης ή τμήματα κώδικα staticInitializer.
executableUnitNumber Ακέραιος αριθμός Ο αριθμός της εκτελέσιμης μονάδας στην οποία έχει εισαχθεί το τμήμα κώδικα διερευνητή. Αυτό το είδος δεδομένων είναι έγκυρο μόνο για τμήματα κώδικα διερευνητή executableUnit και catch. Εάν η μέθοδος δεν διαθέτει πληροφορίες γραμμής πρωτογενούς κώδικα, θα φαίνεται ότι έχει μία εκτελέσιμη μονάδα, με τον αριθμό μηδέν.
Παράδειγμα:

Για να καταχωρήσετε στοιχεία δεδομένων τμήματος κώδικα διερευνητή, επιλέξτε Τμήμα κώδικα στο τμήμα παραθύρου διακλάδωσης, έπειτα χρησιμοποιήστε τις επιλογές Προσθήκη και Τροποποίηση για να καταχωρήσετε και να ορίσετε τα στοιχεία δεδομένων στο τμήμα παραθύρου τροποποίησης.

Λειτουργία επεξεργασίας Probekit που δείχνει τον τρόπο εμφάνισης των στοιχείων δεδομένων ενός τμήματος κώδικα

Σχετικές παραπομπές
Πρωτογενής κώδικας Java για το τμήμα κώδικα του διερευνητή
Είδη τμημάτων κώδικα διερευνητή