Comment résoudre ClassCastException en Java ?

Comment Resoudre Classcastexception En Java



En Java, le ' ClassCastException ” aide à identifier les problèmes de compatibilité de type lors de l'exécution, en permettant aux développeurs de les détecter au début de la phase de développement. Il assure également la sécurité du type, évitant les incohérences dans le programme. Le ClassCastException aide beaucoup dans le processus de débogage, de test, de conversion de type correcte, etc.

Ce guide montre la procédure pour résoudre ClassCastException en Java.







Comment ClassCastException se produit-il en Java ?

Le ' ClassCastException ” assure une conversion de type appropriée et empêche les erreurs d'exécution causées par des conversions de type incompatibles. En termes simples, cette exception est levée lorsqu'un objet est tenté d'être converti en un type incompatible.



Par exemple, visitez le code ci-dessous sur le ' ClassCastException ” en Java :



importer java.io.* ;
importer java.lang.* ;
importer java.util.* ;

classe LinuxHintGenericName {
//Création de la classe de pilote
public statique annuler principal ( Chaîne [ ] arguments )
{
essayer {
Objet parent = nouveau Objet ( ) ;

Chaîne enfant = ( Chaîne ) parent ;
Système . dehors . println ( enfant ) ;
}
attraper ( Exception F ) {
Système . dehors . println ( F ) ;
}
}
}

Explication du code ci-dessus :





  • Dans le ' essayer 'bloc, l'instance d'un objet' parent ' est déclaré en utilisant le ' nouveau ' mot-clé.
  • Après cela, le transtypage est utilisé dans lequel le ' objet ” type est en cours de transtypage et porte le nom de “ enfant ”.
  • Ce transtypage viole la règle selon laquelle la classe parent ne doit pas être transtypée vers sa classe enfant. C'est pourquoi l'exception survient parce que le ' objet ” type est une classe parent.
  • Au final, le « attraper ' le bloc est utilisé qui prend ' Exception ” comme paramètre et imprime un message sur la console.

Après la fin de la phase d'exécution :



L'instantané ci-dessus montre l'occurrence de ClassCastException en Java.

Comment résoudre ClassCastException en Java ?

Trois solutions possibles sont utilisées que le développeur peut facilement résoudre ou éviter la possibilité d'augmenter le ' ClassCastException ” en Java.

Ces solutions sont décrites ci-dessous séparément :

Solution 1 : Utilisation de l'opérateur « instanceof »

Le ' exemple de ” l'opérateur vérifie si le “ objet ” est une instance du type souhaité ou non. Cette vérification permet d'éviter l'apparition de ' ClassCastException ”. Par exemple, visitez le bloc de code ci-dessous :

public classe TypeCheckingLinuxHint {
public statique annuler principal ( Chaîne [ ] arguments ) {

Objet parent = 'Famille LinuxHint' ;
si ( parent exemple de Chaîne ) {
Chaîne enfant = ( Chaîne ) parent ;
Système . dehors . println ( 'Après le transtypage de String : ' + enfant ) ;
} autre {
Système . dehors . println ( 'L'objet est une instance du type String souhaité.' ) ;
}
}
}

Explication du code ci-dessus :

  • Premièrement la ' parent ” objet est créé qui est initialisé avec une valeur factice à l'intérieur du “ essayer ' bloc.
  • Ensuite, utilisez le 'si' déclaration dans laquelle le « exemple de L'opérateur ' est utilisé pour vérifier l'instance de ' parent « objet avec désiré » Chaîne ' taper.
  • Ensuite, si la condition renvoie ' vrai » le transtypage est effectué et affiché sur la console.
  • Sinon, le message d'erreur personnalisé s'affiche sur la console.

Après la fin de la phase d'exécution :

L'instantané montre que le transtypage est effectué avec succès et que ClassCastException est résolu à l'aide du ' exemple de ” opérateur.

Solution 2 : Révisez et corrigez l'opération de transtypage

Une autre solution consiste à vérifier le code plusieurs fois et à passer en revue les types compatibles pour le transtypage. Par exemple, visitez le code ci-dessous dans lequel le ' ClassCastException ” est arrêté en raison d'un type souhaité incompatible pour le transtypage :

public classe TypeCheckLinuxHint {
public statique annuler principal ( Chaîne [ ] arguments ) {
Objet parent = 'Famille LinuxHint' ;
Entier nombreconverti = ( Entier ) parent ;
Système . dehors . println ( 'Numéro après transtypage : ' + nombreconverti ) ;
}
}

Dans le code ci-dessus, le programmeur a incorrectement lancé le ' Chaîne ' pour ' Entier ”.

Après la fin de la phase de compilation :

L'instantané ci-dessus montre l'occurrence de ClassCastException.

Solution 3 : Utilisation de génériques

Les programmeurs peuvent utiliser ' génériques ” pour spécifier les types attendus et appliquer la sécurité des types au moment de la compilation.

Par exemple, visitez le code ci-dessous :

importer java.util.ArrayList ;
importer java.util.List ;

public classe usingGenerics {
public statique annuler principal ( Chaîne [ ] arguments ) {
Liste < Chaîne > empName = nouveau Liste des tableaux <> ( ) ;
empName. ajouter ( 'Harry' ) ;
empName. ajouter ( 'Potier' ) ;

Chaîne Initial = empName. obtenir ( 0 ) ;
Chaîne Final = empName. obtenir ( 1 ) ;

Système . dehors . println ( 'Prénom: ' + Initial ) ;
Système . dehors . println ( 'Nom de famille: ' + Final ) ;
}
}

Explication du code ci-dessus :

  • Tout d'abord, les utilitaires requis sont importés dans le fichier Java, et une classe de ' usingGenerics » est déclaré.
  • Ensuite, le « Liste des tableaux « du genre » Chaîne ' est déclaré avec le nom ' empName ” et initialisé en fournissant deux éléments de données factices.
  • Ensuite, créez deux variables de type String nommées ' Initial ' et ' Final ”. Après cela, attribuez des valeurs en accédant aux numéros d'index.
  • À la fin, affichez les deux variables pour voir le résultat.

Après la fin de l'exécution, la sortie ressemble à ceci :

L'instantané ci-dessus montre que le transtypage a été effectué en utilisant des génériques.

Conclusion

Pour résoudre le ' ClassCastException ' en Java, le programmeur doit s'assurer de la bonne compatibilité des types, l'utilisation de ' génériques ' et le ' exemple de ” opérateur. Pour résoudre l'exception, le programmeur doit revoir et corriger l'opération de transtypage en s'assurant de la bonne compatibilité des types. De plus, ce « ClassCastException ' peut être évité en utilisant ' génériques ' et avec l'utilisation d'un ' exemple de ” opérateur. Ce guide a démontré la méthode pour résoudre l'exception ClassCastException en Java.