1. Introduction à l'opérateur diamant
2. Exemple de déclaration avant JDK 7
// Classe genérica com dois tipos class TwoGen<T, V> { T ob1; V ob2; TwoGen(T o1, V o2) { ob1 = o1; ob2 = o2; } } // Criação de uma instância antes do JDK 7 TwoGen<Integer, String> tgOb = new TwoGen<Integer, String>(42, "testing");
Inconvénient : Les types génériques doivent être répétés à la fois dans la déclaration et dans la création d'instance.
. Utilisation de l'opérateur Rhombus dans JDK 7
// Criação de uma instância usando o operador losango TwoGen<Integer, String> tgOb = new TwoGen<>(42, "testing");
L'opérateur <> demande au compilateur de déduire les arguments de type en fonction de la déclaration de variable (TwoGen).
4. Formulaire général
Syntaxe générale pour créer une instance d'une classe générique :
nome-classe<lista-arg-tipo> nome-var = new nome-classe<>(lista-arg-cons);
Exemple :
TwoGen<Double, Boolean> example = new TwoGen<>(3.14, true);
5. Inférence dans les méthodes
L'inférence de type fonctionne également pour les méthodes qui prennent des classes génériques comme paramètre.
Exemple :
// Adicionado à classe TwoGen boolean isSame(TwoGen<T, V> o) { return ob1 == o.ob1 && ob2 == o.ob2; } // Chamando o método usando o operador losango if (tgOb.isSame(new TwoGen<>(42, "testing"))) { System.out.println("Same"); }
Les types du nouveau paramètre TwoGen<>(...) sont automatiquement déduits.
6. Avantages de l'opérateur Losango
Réduire la verbosité : particulièrement utile pour les classes génériques avec de nombreux paramètres de type.
Lisibilité : simplifie les déclarations complexes.
7. Compatibilité
L'opérateur diamant ne fonctionne pas dans les versions Java antérieures à JDK 7.
Les exemples d'anciens livres et codes utilisent la syntaxe complète pour maintenir la compatibilité avec tous les compilateurs Java prenant en charge les génériques.
8. Bonnes pratiques
Utilisez l'opérateur Diamond dans les projets prenant en charge JDK 7 pour optimiser et rendre le code plus lisible.
Préférez la syntaxe complète dans les exemples d'apprentissage ou les projets existants pour plus de clarté.
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!