Maison > Java > javaDidacticiel > Pourquoi ne puis-je pas créer des tableaux génériques en Java et quelles sont les alternatives sûres ?

Pourquoi ne puis-je pas créer des tableaux génériques en Java et quelles sont les alternatives sûres ?

Mary-Kate Olsen
Libérer: 2024-12-26 07:41:10
original
949 Les gens l'ont consulté

Why Can't I Create Generic Arrays in Java, and What are the Safe Alternatives?

Création de tableaux génériques : une exploration des limites des tableaux de Java

La fonctionnalité générique de Java permet de créer des conteneurs de type sécurisé, mais se heurte à des difficultés lorsque traitant des tableaux. Comprendre ces limitations est crucial pour éviter les erreurs inattendues.

Covariance de type et génériques

Les tableaux présentent une covariance, ce qui signifie qu'un tableau d'un supertype peut contenir des éléments d'un sous-type. . Cependant, les génériques appliquent des vérifications de type plus strictes et n'autorisent pas ce comportement, garantissant ainsi la sécurité des types au moment de la compilation. appliquer des vérifications de type au moment de l'exécution à l'aide de Array Store Checking. Les génériques, en revanche, subissent un effacement de type, ce qui signifie que les informations de type sont perdues au moment de l'exécution. Cette différence conduit à des opérations divergentes lorsque l'on travaille avec des génériques et des tableaux.

Interdire la création de tableaux génériques

La création d'un tableau avec un type de composant générique est interdite en raison de son nature dangereuse. Prenons l'exemple suivant :

Au moment de l'exécution, ce tableau sera en fait un Object[], qui ne vérifiera pas son type correctement lorsqu'il est affecté à une référence, par exemple, Integer[].

Typecasting d'un objet[] vers un tableau générique

public <T> T[] getArray(int size) {
    T[] arr = new T[size];  // Type-unsafe, not allowed
    return arr;
}
Copier après la connexion

Les éléments du code E[] = (E[]) nouvel objet[10] ; fonctionne grâce à un transtypage de suppression d'avertissement. Cependant, cette solution de contournement n'est pas toujours sûre et peut entraîner des erreurs d'exécution, en particulier lorsqu'il s'agit d'entrées non fiables.

Tableaux de types de caractères génériques illimités

La création de tableaux est autorisé pour les types génériques illimités car ils sont réifiables, ce qui signifie qu'ils ont un paramètre de type qui n'est pas spécifié. Ceci est sûr car le tableau peut contenir des éléments de n'importe quel type.

Alternative pour E[] : Array.newInstance()

Pour créer un tableau en toute sécurité avec un type de composant générique, utilisez Array.newInstance(). Cette méthode prend comme paramètres l'objet Class du type de composant et la taille de tableau souhaitée.

En comprenant ces limitations et en utilisant la solution de contournement recommandée, les développeurs Java peuvent gérer efficacement les génériques et les tableaux tout en garantissant la sécurité des types.

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