亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Table des matières
2. Wildcards: Gestion des types inconnus
La joker illimité ( )
La joker à liaison supérieure ( )
La joker à limite inférieure ( )
3. La règle PECS: le producteur extends , le consommateur super
4. Pièges et astuces communes
Maison Java javaDidacticiel Comprendre les génériques Java et les caractères génériques pour le code de type type

Comprendre les génériques Java et les caractères génériques pour le code de type type

Jul 30, 2025 am 12:27 AM
java Génériques

Les génériques Java offrent une sécurité de type compilé et éliminent la coulée en permettant aux paramètres de type dans les classes, les interfaces et les méthodes, tandis que les caractères génériques améliorent la flexibilité lorsque vous travaillez avec des types inconnus; 1. Les génériques permettent un code réutilisable, comme la liste ou la bo?te générique ; 2. Les caractères génériques gèrent les types inconnus: > Pour tout type, ? étend t> pour les sous-types (utiles pour la lecture) et super t> pour les supertypes (utile pour l'écriture); 3. La règle PECS guide l'utilisation: l'utilisation s'étend lorsque le type produit des données (producteur), super quand il consomme des données (consommateur), comme on le voit dans Collection.copy (dest Super T>, Src étend T>); 4. évitez les types bruts, n'utilisez pas les caractères génériques dans les types de retour inutilement, les paramètres de type limitées à effet de levier comme >, et rappelez-vous les limites d'effacement de type utilisation de l'exécution - une utilisation appropriée des génériques et des caractères génériques améliore la sécurité, la clarté et la réutilisabilité du code.

Comprendre les génériques Java et les caractères génériques pour le code de type type

Les génériques Java et les caractères génériques sont des fonctionnalités puissantes qui permettent la programmation de type type, la réduction des erreurs d'exécution et l'amélioration de la lisibilité du code. Introduits dans Java 5, les génériques vous permettent de définir des classes, des interfaces et des méthodes avec des paramètres de type, afin que le même code puisse fonctionner avec différents types tout en attrapant des décalages de type au moment de la compilation. Les caractères génériques étendent cette flexibilité en vous permettant de travailler avec des types inconnus ou limités.

Comprendre les génériques Java et les caractères génériques pour le code de type type

Voici comment les comprendre et les utiliser efficacement.


1. Que sont les génériques?

Les génériques vous permettent de vous résumer sur les types. Par exemple, au lieu d'utiliser des types bruts comme List , vous pouvez utiliser List<string></string> pour vous assurer que seules les cha?nes sont ajoutées.

Comprendre les génériques Java et les caractères génériques pour le code de type type
 List <string> names = new ArrayList <> ();
names.add ("Alice");
// noms.add (123); // Erreur de compilation - Tapez la sécurité!

Sans génériques, vous devrez lancer des objets et risquer ClassCastException à l'exécution.

Avantages clés:

Comprendre les génériques Java et les caractères génériques pour le code de type type
  • Vérification du type de compilation
  • élimination de la coulée explicite
  • Réutilisation de code sur différents types

Vous pouvez également définir vos propres classes et méthodes génériques:

 Classe publique Box <T> {
    valeur t privée;

    public void set (t valeur) {this.value = value; }
    public t get () {return value; }
}

Maintenant, Box<String> , Box<Integer> , etc., sont tous en sécurité.


2. Wildcards: Gestion des types inconnus

Parfois, vous devez travailler avec des types génériques lorsque le paramètre de type exact n'est pas connu. C'est là que les wildcards ( ? ) Entrent en jeu.

La joker illimité ( <?> )

Utilisez lorsque vous ne vous souciez pas du type, généralement pour la lecture des collections.

 public void imprimer (list <?> liste) {
    System.out.println ("Size:" list.size ());
}

Vous ne pouvez pas ajouter d'éléments (sauf null ) car le type réel est inconnu.

La joker à liaison supérieure ( <? extends T> )

Utilisez lorsque vous souhaitez accepter un type et ses sous-types. Commun dans les opérations en lecture seule.

 Public Double Sum (Liste <? Extend Numbers> Numbers) {
    return nombres.Stream (). Maptodouble (nombre :: doubleValue) .sum ();
}

Vous pouvez maintenant passer List<Integer> , List<Double> , etc.

Mais encore une fois, vous ne pouvez rien ajouter (sauf null ) - parce que le compilateur ne conna?t pas le type exact.

La joker à limite inférieure ( <? super T> )

Utilisez lorsque vous souhaitez accepter un type et ses supertypes. Utile pour les opérations d'écriture.

 public void addnumbers (list <? Super Integer> liste) {
    list.add (1);
    list.add (2);
}

Cela fonctionne avec List<Integer> , List<Number> ou List<Object> .

Mais vous ne pouvez pas lire en toute sécurité comme Integer - les éléments peuvent être seulement Object .


3. La règle PECS: le producteur extends , le consommateur super

Un mnémonique utile du livre Java efficace :

PECS : Producteur - extends , consommateur - super

  • Si un objet paramétré produit t (vous en lisez T), utilisez <? extends T> .
  • S'il consomme t (vous écrivez t), utilisez <? super T> .

Par exemple, dans Collections.copy() :

 Copie publique statique <t> void (liste <? Super T> dest, liste <? étend t> src)
  • src est producteur? extends T
  • dest est un consommateur? super T

Appliquez des PEC pour concevoir des API flexibles et s?res.


4. Pièges et astuces communes

  • N'utilisez pas les caractères génériques dans les types de retour sauf si nécessaire - il oblige les appelants à faire face à des types inconnus.

  • Les types bruts sont dangereux - éviter List au lieu de List<String> .

  • Les méthodes génériques peuvent déduire les types:

     public <T> void Print (T item) {...}
  • Le type d'effacement signifie que les génériques sont appliqués au temps de compilation uniquement. Aucune information d'exécution (par exemple, vous ne pouvez pas faire new T[]() ).

  • Les paramètres de type bordés peuvent contraindre les génériques:

     public <t étend comparable <T>> T max (t a, t b) {
        retour a.compareto (b)> 0? R: B;
    }

    L'utilisation de génériques et de jokers conduit correctement à un code plus propre et plus s?r. Comprenez quand utiliser extends , les types super ou spécifiques - et rappelez-vous les PEC. Il ne s'agit pas seulement d'éviter les moulages; Il s'agit d'exprimer une intention et de prendre des bugs t?t.

    Fondamentalement, les génériques vous offrent une sécurité en temps de compilation, et les caractères génériques vous offrent la flexibilité de réutiliser le code à travers les hiérarchies de type - sans sacrifier cette sécurité.

    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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Construire des API RESTful à Java avec Jakarta EE Construire des API RESTful à Java avec Jakarta EE Jul 30, 2025 am 03:05 AM

Setupamaven / gradleprojectwithjax-rsDependces likejersey; 2.CreateArestResourceUsingannotationsSuchas @ pathand @ get; 3.ConfigureTheApplicationViaApplicationsUbclassorweb.xml; 4.AddjacksonforjsonBindingByCludingJersey-Media-Json-Jackson; 5.DeploEp

Un guide du développeur à Maven pour la gestion de projet Java Un guide du développeur à Maven pour la gestion de projet Java Jul 30, 2025 am 02:41 AM

Maven est un outil standard pour la gestion et la construction de projet Java. La réponse réside dans le fait qu'il utilise pom.xml pour normaliser la structure du projet, la gestion des dépendances, l'automatisation du cycle de vie de la construction et les extensions de plug-in; 1. Utilisez pom.xml pour définir GroupID, Arfactive, version et dépendances; 2. Commandes Master Core telles que MvnClean, compiler, tester, package, installer et déploier; 3. Utiliser la fonction de dépendance et les exclusions pour gérer les versions et les conflits de dépendance; 4. Organisez de grandes applications via la structure du projet multi-modules et sont gérées uniformément par le POM parent; 5

Comment utiliser Java MessagediGest pour le hachage (MD5, SHA-256)? Comment utiliser Java MessagediGest pour le hachage (MD5, SHA-256)? Jul 30, 2025 am 02:58 AM

Pour générer des valeurs de hachage à l'aide de Java, il peut être implémenté via la classe MessagediGest. 1. Obtenez une instance de l'algorithme spécifié, tel que MD5 ou SHA-256; 2. Appelez la méthode .update () à transmettre les données à chiffrer; 3. Appelez la méthode .digest () pour obtenir un tableau d'octets de hachat; 4. Convertir le tableau d'octets en une cha?ne hexadécimale pour la lecture; Pour les entrées telles que les fichiers gros, lisez dans des morceaux et appelez .Update () plusieurs fois; Il est recommandé d'utiliser SHA-256 au lieu de MD5 ou SHA-1 pour assurer la sécurité.

Exemple de bascule du mode sombre CSS Exemple de bascule du mode sombre CSS Jul 30, 2025 am 05:28 AM

Tout d'abord, utilisez JavaScript pour obtenir les préférences du système utilisateur et les paramètres de thème stockés localement et initialiser le thème de la page; 1. La structure HTML contient un bouton pour déclencher la commutation du sujet; 2. CSS utilise: Root pour définir des variables de thème brillantes, la classe de mode. Dark définit les variables de thème sombres et applique ces variables via var (); 3. JavaScript détecte préfère-Color-Scheme et lit LocalStorage pour déterminer le thème initial; 4. Communiquez la classe en mode noir sur l'élément HTML lorsque vous cliquez sur le bouton et enregistre l'état actuel vers LocalStorage; 5. Tous les changements de couleur sont accompagnés d'une animation de transition de 0,3 seconde pour améliorer l'utilisateur

Exemple de menu déroulant CSS Exemple de menu déroulant CSS Jul 30, 2025 am 05:36 AM

Oui, un menu déroulant CSS commun peut être implémenté via Pure HTML et CSS sans JavaScript. 1. Utilisez des ul imbriqués et Li pour construire une structure de menu; 2. Utilisez le: Hover Pseudo-Class pour contr?ler l'affichage et la cachette du contenu déroulant; 3. Position définie: relative pour le parent li, et le sous-menu est positionné en utilisant la position: absolue; 4. Le sous-menu défaut par défaut: Aucun, qui devient affichage: Block lorsqu'il a survolé; 5. Le tir-down à plusieurs niveaux peut être réalisé grace à la nidification, combinée à la transition, et à l'ajout d'animations fondues, et adaptées aux terminaux mobiles avec des requêtes multimédias. La solution entière est simple et ne nécessite pas de prise en charge JavaScript, qui convient au grand

VSCODE Settings.json Emplacement VSCODE Settings.json Emplacement Aug 01, 2025 am 06:12 AM

Le fichier SetfitS.JSON est situé dans le chemin de niveau utilisateur ou au niveau de l'espace de travail et est utilisé pour personnaliser les paramètres VScode. 1. Chemin de niveau utilisateur: Windows est C: \ Users \\ AppData \ Roaming \ Code \ User \ Settings.json, macOS est /users//library/applicationsupport/code/user/settings.json, Linux est /home//.config/code/user/settings.json; 2. Chemin au niveau de l'espace de travail: .vscode / Paramètres dans le répertoire racine du projet

Exemple de cha?ne de date d'analyse Python Exemple de cha?ne de date d'analyse Python Jul 30, 2025 am 03:32 AM

Utilisez dateTime.Strptime () pour convertir les cha?nes de date en objet DateTime. 1. Utilisation de base: Parse "2023-10-05" comme objet DateTime via "% y-% m-% d"; 2. prend en charge plusieurs formats tels que "% m /% d /% y" pour analyser les dates américaines, "% d /% m /% y" pour analyser les dates britanniques, "% b% d,% y% i:% m% p" pour analyser le temps avec AM / PM; 3. Utilisez dateUtil.parser.parse () pour déduire automatiquement les formats inconnus; 4. Utiliser .d

SUblime Text Auto Close HTML Tags SUblime Text Auto Close HTML Tags Jul 30, 2025 am 02:41 AM

L'installation du plug-in Emmet peut réaliser une fermeture automatique intelligente des balises et une syntaxe d'abréviation de support; 2. Activer "Auto_Match_enabled": TRUE permet à Sublime de terminer automatiquement les balises simples; 3. Utilisez Alt. (Win) ou Ctrl Shift. (MAC) Les touches de raccourci pour fermer manuellement l'étiquette actuelle - il est recommandé d'utiliser Emmet dans la vie quotidienne. Les deux dernières méthodes peuvent être combinées, ce qui est efficace et simple à définir.

See all articles