Ο τελεστής instanceof στη Java χρησιμοποιείται για να υποδείξει κατά το χρόνο εκτέλεσης εάν ένα αντικείμενο είναι παρουσία μιας συγκεκριμένης κλάσης. Το instanceof υποδεικνύει εάν το αντικείμενο είναι ένα στιγμιότυπο αυτής της συγκεκριμένης κλάσης ή της υποκλάσης της επιστρέφοντας ένα boolean.
instanceof στην Java είναι στο .net!
Χρήση: result = πραγμάτωση αντικειμένουτης κλάσης Παράμετρος: Αποτέλεσμα: Δυαδικός τύπος. Αντικείμενο: Υποχρεωτικό. Αυθαίρετες εκφράσεις αντικειμένων. Κατηγορία: Υποχρεωτικό. Οποιαδήποτε καθορισμένη κλάση αντικειμένου. Διευκρινίζω: Εάν το αντικείμενο είναι μια παρουσία της κλάσης, ο τελεστής instanceof επιστρέφει true. Εάν το αντικείμενο δεν είναι παρουσία της καθορισμένης κλάσης ή εάν το αντικείμενο είναι null, επιστρέφεται false.
Ωστόσο, υπάρχει μια διαφορά μεταξύ της κατάστασης μεταγλώττισης και της κατάστασης εκτέλεσης του instanceof στην Java:
Στη μεταγλωττισμένη κατάσταση, η κλάση μπορεί να είναι η γονική κλάση, η δική της κλάση ή η θυγατρική κλάση του αντικειμένου αντικειμένου. Σε αυτές τις τρεις περιπτώσεις, η Java δεν αναφέρει σφάλμα κατά τη μεταγλώττιση.
Στην τρέχουσα μετάβαση, η κλάση μπορεί να είναι η γονική κλάση του αντικειμένου αντικειμένου, η δική της κλάση, όχι μια θυγατρική κλάση. Στις δύο πρώτες περιπτώσεις, το αποτέλεσμα είναι αληθές και η τελευταία είναι ψευδές. Ωστόσο, όταν η κλάση είναι υποκλάση, η μεταγλώττιση δεν θα αναφέρει σφάλμα. Το αποτέλεσμα εκτέλεσης είναι ψευδές.
Παράδειγμα:
διεπαφή Πρόσωπο
δημόσια διεπαφή Πρόσωπο { δημόσιο κενό eat();
}
Εφαρμόστε την τάξη Άνθρωποι
δημόσια τάξη Οι άνθρωποι υλοποιούν το Πρόσωπο { ιδιωτικό int a=0; @Override public void eat() { System.out.println("======"+a);
}
}
Υποκατηγορία xiaoming:
Η δημόσια τάξη xiaoming επεκτείνει τους ανθρώπους { ιδιωτικό όνομα συμβολοσειράς.
@Override public void eat() { System.out.println("+++++++++");
}
}
κύρια λειτουργία
Σημείωση: Ο κώδικας στα παραπάνω 2 σημεία δεν θα αναφέρει σφάλμα κατά τη μεταγλώττιση.
Αποτέλεσμα εκτέλεσης:
true
false
true
true
|