Maison > Java > javaDidacticiel > Les méthodes Java remplacées peuvent-elles avoir des types de retour covariants et quelles sont les restrictions sur la gestion des exceptions ?

Les méthodes Java remplacées peuvent-elles avoir des types de retour covariants et quelles sont les restrictions sur la gestion des exceptions ?

Barbara Streisand
Libérer: 2024-12-02 13:42:15
original
310 Les gens l'ont consulté

Can Java Overridden Methods Have Covariant Return Types, and What Are the Restrictions on Exception Handling?

Types de retour covariants en Java

En Java, le type de retour d'une méthode remplacée peut être covariant, ce qui signifie qu'elle peut renvoyer un type de retour plus dérivé type que la méthode remplacée. Cependant, cette règle ne s'applique pas aux exceptions levées par une méthode substituée.

Restrictions de levée d'exception dans les méthodes substituées

Le compilateur applique les restrictions suivantes aux méthodes substituées concernant l'exception gestion :

  • La méthode remplacée ne peut pas lancer d'exceptions vérifiées nouvelles ou plus larges que celles déclarées par la méthode remplacée méthode.
  • La méthode remplacée peut générer des exceptions non vérifiées plus étroites ou nouvelles.

Explication

Ces restrictions garantissent que les sous-classes ne peuvent pas introduire de nouvelles ou exceptions vérifiées plus sévères à l’interface de la méthode remplacée. Ceci est nécessaire pour le polymorphisme, car cela permet au code écrit sur la superclasse de gérer les exceptions de manière appropriée.

Exemple

Considérons l'exemple suivant :

class A {
    public void foo() throws FileNotFoundException {
        // ...
    }
}

class B extends A {
    @Override
    public void foo() throws SQLException { // ERROR: broader checked exception
        // ...
    }
}
Copier après la connexion

Dans cet exemple, la classe A définit la méthode foo qui lève une FileNotFoundException. La classe B, qui étend A, tente de remplacer foo en déclarant une exception vérifiée plus large, SQLException. Ceci n'est pas autorisé car cela viole les restrictions de lancement d'exceptions.

Justification

Le compilateur applique ces restrictions à :

  • Préserver le contrat : L'interface de la méthode remplacée ne doit pas être modifiée d'une manière qui romprait le code existant qui repose sur it.
  • Assurer la substitution d'objet : Les objets des sous-classes doivent être substituables aux objets de la superclasse, et cela inclut la gestion appropriée des exceptions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal