Πώς να επιλύσετε το ClassCastException στην Java;

Pos Na Epilysete To Classcastexception Sten Java



Στην Java, το ' ClassCastException ” βοηθά στον εντοπισμό προβλημάτων συμβατότητας τύπου κατά το χρόνο εκτέλεσης, επιτρέποντας στους προγραμματιστές να τα εντοπίσουν νωρίς στη φάση ανάπτυξης. Εξασφαλίζει επίσης ασφάλεια τύπου, αποτρέποντας τις ασυνέπειες στο πρόγραμμα. Το ClassCastException βοηθάει πολύ στη διαδικασία εντοπισμού σφαλμάτων, δοκιμών, casting σωστού τύπου κ.λπ.

Αυτός ο οδηγός παρουσιάζει τη διαδικασία επίλυσης του ClassCastException σε Java.







Πώς προκύπτει το ClassCastException στην Java;

Ο ' ClassCastException ” διασφαλίζει τη σωστή μετάδοση τύπου και αποτρέπει σφάλματα χρόνου εκτέλεσης που προκαλούνται από μη συμβατές μετατροπές τύπων. Με απλά λόγια, αυτή η εξαίρεση απορρίπτεται όταν ένα αντικείμενο επιχειρείται να μεταφερθεί σε έναν μη συμβατό τύπο.



Για παράδειγμα, επισκεφτείτε τον παρακάτω κώδικα σχετικά με το ' ClassCastException ” σε Java:



εισαγωγή java.io.* ;
εισαγωγή java.lang.* ;
εισαγωγή java.util.* ;

τάξη LinuxHint {
//Δημιουργία κατηγορίας οδηγών
δημόσιο στατικός κενός κύριος ( Σειρά [ ] args )
{
δοκιμάστε {
Αντικείμενο μητρική εταιρεία = νέος Αντικείμενο ( ) ;

Σειρά παιδί = ( Σειρά ) μητρική εταιρεία ;
Σύστημα . έξω . println ( παιδί ) ;
}
σύλληψη ( Εξαίρεση φά ) {
Σύστημα . έξω . println ( φά ) ;
}
}
}

Επεξήγηση του παραπάνω κώδικα:





  • Στο ' δοκιμάστε 'μπλοκ, η παρουσία ενός αντικειμένου' μητρική εταιρεία ' δηλώνεται χρησιμοποιώντας το ' νέος » λέξη-κλειδί.
  • Μετά από αυτό, χρησιμοποιείται η τυπογραφία στην οποία το « αντικείμενο Ο τύπος 'τυπογραφείται' και έχει το όνομα ' παιδί '.
  • Αυτή η μετάδοση τύπων παραβιάζει τον κανόνα σύμφωνα με τον οποίο η γονική κλάση δεν πρέπει να μεταδίδεται στη θυγατρική της κλάση. Γι' αυτό προκύπτει η εξαίρεση γιατί το « αντικείμενο Ο τύπος είναι μια γονική τάξη.
  • Στο τέλος, το « σύλληψη 'Το μπλοκ χρησιμοποιείται που παίρνει' Εξαίρεση ” ως παράμετρος και εκτυπώνει ένα μήνυμα στην κονσόλα.

Μετά το τέλος της φάσης εκτέλεσης:



Το παραπάνω στιγμιότυπο δείχνει την εμφάνιση του ClassCastException στην Java.

Πώς να επιλύσετε το ClassCastException στην Java;

Χρησιμοποιούνται τρεις πιθανές λύσεις που ο προγραμματιστής μπορεί εύκολα να επιλύσει ή να αποφύγει την ευκαιρία να αυξήσει το ' ClassCastException ” στην Java.

Αυτές οι λύσεις περιγράφονται παρακάτω ξεχωριστά:

Λύση 1: Χρήση του 'instanceof' Operator

Ο ' παράδειγμα του ' ο χειριστής επαληθεύει εάν το ' αντικείμενο ” είναι ένα παράδειγμα του επιθυμητού τύπου ή όχι. Αυτή η επαλήθευση βοηθά στην πρόληψη της εμφάνισης ' ClassCastException '. Για παράδειγμα, επισκεφτείτε το παρακάτω μπλοκ κώδικα:

δημόσιο τάξη ΤύποςCheckingLinuxHint {
δημόσιο στατικός κενός κύριος ( Σειρά [ ] args ) {

Αντικείμενο μητρική εταιρεία = 'LinuxHint Family' ;
αν ( μητρική εταιρεία παράδειγμα του Σειρά ) {
Σειρά παιδί = ( Σειρά ) μητρική εταιρεία ;
Σύστημα . έξω . println ( 'Μετά την πληκτρολόγηση String: ' + παιδί ) ;
} αλλού {
Σύστημα . έξω . println ( 'Το αντικείμενο είναι μια εμφάνιση του επιθυμητού τύπου String.' ) ;
}
}
}

Επεξήγηση του παραπάνω κώδικα:

  • Πρώτον, το « μητρική εταιρεία ' Δημιουργείται αντικείμενο το οποίο αρχικοποιείται με μια εικονική τιμή μέσα στο ' δοκιμάστε ' ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ.
  • Στη συνέχεια, χρησιμοποιήστε το 'αν' δήλωση στην οποία το « παράδειγμα του Ο τελεστής ' χρησιμοποιείται για τον έλεγχο της παρουσίας του ' μητρική εταιρεία «αντικείμενο με επιθυμητό» Σειρά πληκτρολογήστε.
  • Στη συνέχεια, εάν η συνθήκη επιστρέψει ' αληθής ” εκτελείται η μετάδοση τύπων και εμφανίζεται στην κονσόλα.
  • Διαφορετικά, το προσαρμοσμένο μήνυμα σφάλματος εμφανίζεται στην κονσόλα.

Μετά το τέλος της φάσης εκτέλεσης:

Το στιγμιότυπο δείχνει ότι η μετάδοση τύπων ολοκληρώθηκε με επιτυχία και το ClassCastException επιλύθηκε χρησιμοποιώντας το ' παράδειγμα του ' χειριστής.

Λύση 2: Αναθεώρηση και Διόρθωση Λειτουργίας Typecasting

Μια άλλη λύση είναι να ελέγξετε τον κώδικα πολλές φορές και να ελέγξετε τους συμβατούς τύπους για τη μετάδοση τύπων. Για παράδειγμα, επισκεφτείτε τον παρακάτω κώδικα στον οποίο το ' ClassCastException ” συλλαμβάνεται λόγω ασυμβίβαστου επιθυμητού τύπου για τη μετάδοση τύπων:

δημόσιο τάξη ΤύποςCheckLinuxHint {
δημόσιο στατικός κενός κύριος ( Σειρά [ ] args ) {
Αντικείμενο μητρική εταιρεία = 'LinuxHint Family' ;
Ακέραιος αριθμός μετατρεπόμενος αριθμός = ( Ακέραιος αριθμός ) μητρική εταιρεία ;
Σύστημα . έξω . println ( 'Αριθμός μετά την πληκτρολόγηση: ' + μετατρεπόμενος αριθμός ) ;
}
}

Στον παραπάνω κώδικα, ο προγραμματιστής εκτόξευσε εσφαλμένα το ' Σειρά ' προς την ' Ακέραιος αριθμός '.

Μετά το τέλος της φάσης σύνταξης:

Το παραπάνω στιγμιότυπο δείχνει την εμφάνιση του ClassCastException.

Λύση 3: Χρήση Generics

Οι προγραμματιστές μπορούν να χρησιμοποιήσουν ' γενόσημα ” για να καθορίσετε τους αναμενόμενους τύπους και να επιβάλετε την ασφάλεια τύπου κατά τη στιγμή της μεταγλώττισης.

Για παράδειγμα, επισκεφτείτε τον παρακάτω κώδικα:

εισαγωγή java.util.ArrayList ;
εισαγωγή java.util.List ;

δημόσιο τάξη χρησιμοποιώντας Generics {
δημόσιο στατικός κενός κύριος ( Σειρά [ ] args ) {
Λίστα < Σειρά > empName = νέος ArrayList <> ( ) ;
empName. Προσθήκη ( 'Βασανίζω' ) ;
empName. Προσθήκη ( 'Αγγειοπλάστης' ) ;

Σειρά Αρχικός = empName. παίρνω ( 0 ) ;
Σειρά Τελικός = empName. παίρνω ( 1 ) ;

Σύστημα . έξω . println ( 'Ονομα: ' + Αρχικός ) ;
Σύστημα . έξω . println ( 'Το δεύτερο όνομα: ' + Τελικός ) ;
}
}

Επεξήγηση του παραπάνω κώδικα:

  • Αρχικά, τα απαιτούμενα βοηθητικά προγράμματα εισάγονται στο αρχείο Java και μια κλάση ' χρησιμοποιώντας Generics », δηλώνεται.
  • Στη συνέχεια, το « ArrayList 'τύπου' Σειρά ' δηλώνεται με το όνομα ' empName ” και αρχικοποιήθηκε παρέχοντας δύο εικονικά στοιχεία δεδομένων.
  • Στη συνέχεια, δημιουργήστε δύο μεταβλητές τύπου String με το όνομα ' Αρχικός ' και ' Τελικός '. Μετά από αυτό, εκχωρήστε τιμές με πρόσβαση στους αριθμούς ευρετηρίου.
  • Στο τέλος, εμφανίστε και τις δύο μεταβλητές για να δείτε το αποτέλεσμα.

Μετά το τέλος της εκτέλεσης, η έξοδος μοιάζει με αυτό:

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

συμπέρασμα

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