Maison  >  Article  >  Java  >  Quelles sont les limites supérieure et inférieure des fonctions génériques Java ? comment utiliser?

Quelles sont les limites supérieure et inférieure des fonctions génériques Java ? comment utiliser?

王林
王林original
2024-04-26 11:45:02643parcourir

Les génériques des fonctions Java permettent de définir des limites supérieures et inférieures. La limite supérieure (étend) spécifie que le type de données accepté ou renvoyé par la fonction doit être un sous-type du type spécifié, tel que 7bac7e57b1a28a76cdacdabd991c2663. La limite inférieure (super) spécifie que le type de données accepté ou renvoyé par la fonction doit être le super type du type spécifié, tel que 8991fee22ef165e6bc8a2922b920a06c. L'utilisation de génériques améliore la réutilisabilité et la sécurité du code.

Java 函数泛型的上限和下限是什么?如何使用?

Limites supérieures et inférieures des fonctions génériques Java

Les génériques de fonctions sont un mécanisme puissant qui nous permet de spécifier au moment de la compilation les types de données qu'une fonction peut gérer. Les génériques en Java peuvent déclarer des limites supérieures et inférieures pour limiter les types de données acceptés ou renvoyés par une fonction.

Upper Bound

La limite supérieure spécifie que le type de données que la fonction peut accepter ou renvoyer doit être un sous-type d'un type spécifié. Il est spécifié à l'aide du mot-clé extends. Par exemple :

public <T extends Number> void printNumber(T number) {
   System.out.println(number);
}

Cette fonction ne peut accepter que les types de Nombre ou ses sous-classes (par exemple, Integer, Double, Float).

Lower Bound (Lower Bound)

La limite inférieure spécifie que le type de données que la fonction peut accepter ou renvoyer doit être un supertype d'un type spécifié. Il est spécifié à l'aide du mot-clé super. Par exemple :

public <T super Number> void sumNumbers(List<T> numbers) {
   double sum = 0;
   for (T number : numbers) {
       sum += number.doubleValue();
   }
}

Cette fonction peut accepter un nombre ou une liste de ses supertypes, tels que Listeae1662832d343b27c0357e2133201ef5 ou Listec0f559cc8d56b43654fcbe4aa9df7b4a.

Cas pratique

Supposons que nous ayons une fonction qui compare deux nombres :

public static <T extends Comparable<T>> int compare(T obj1, T obj2) {
    return obj1.compareTo(obj2);
}

Nous pouvons utiliser cette fonction pour comparer n'importe quel type qui implémente l'interface Comparable, par exemple :

int result = compare(10, 20); // result 为 -1

Utilisation de méthodes

Utilisation de génériques Lorsque vous spécifiez des limites supérieure et inférieure, gardez les points suivants à l'esprit :

  • La limite supérieure spécifie que le type de données que la fonction peut gérer doit être un sous-type du type spécifié.
  • La limite inférieure spécifie que le type de données que la fonction peut gérer doit être un supertype du type spécifié.
  • Vous pouvez utiliser des limites supérieure et inférieure pour restreindre davantage les types de données acceptés ou renvoyés par une fonction.
  • L'utilisation de génériques peut améliorer la réutilisabilité et la sécurité du code.

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:
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