Les règles de compatibilité des génériques de fonctions Java garantissent la sécurité des types. Les règles incluent : des listes de paramètres de même type, des limites de paramètres de même type et des paramètres de type contravariant et covariant. Par exemple, > est compatible avec
> (contravariant), tandis que
Règles de compatibilité pour les fonctions génériques Java
Les fonctions génériques Java nous permettent d'écrire du code de manière sécurisée, mais ne pas suivre les règles de compatibilité correctes peut entraîner des erreurs de compilation. Trions les règles pour éviter de tels problèmes.
Règle 1 : Les listes de paramètres de type sont les mêmes
Seuls les types de fonctions avec la même liste de paramètres sont compatibles. Ainsi, l'exemple suivant entraînera une erreur :
publicvoid func1(T v) {} public void func2(U v) {}
Règle 2 : les paramètres de type ont les mêmes limites
Les limites définissent les valeurs autorisées d'un type générique. Les fonctions sont incompatibles si elles ont des limites différentes pour des paramètres du même type. Par exemple :
public> void func1(T v) {} public void func2(T v) {}
Règle 3 : Paramètres de type contravariant et covariant
est compatible avec
. Par exemple,>
est compatible avec>
.
类型兼容于
。例如
>
兼容于
>
。
类型兼容于
。例如
兼容于
。实战案例
考虑以下代码:
publicvoid func1(T t) { // 代码... } public void func2(Cat c) { // 代码... }
func1
期望一个Animal
或其子类的实例。func2
期望一个Cat
实例。由于Cat
扩展Animal
,因此func1
可以兼容于func2
,从而可以接收Cat
Covariance : Si le type de superclasse T peut remplacer le type de sous-classe S, alors le type
est compatible avec
. Par exemple,
est compatible avec.
Exemple pratique
Considérez le code suivant :rrreee
func1
attend une instance de
Animal
ou de sa sous-classe.
func2
attend une instance
Cat
. Puisque
Cat
étend
Animal
,
func1
est compatible avec
func2
et peut recevoir
Cat
Type paramètres. ConclusionIl est crucial de suivre les règles de compatibilité pour les fonctions génériques afin d'éviter les erreurs de compilation et d'assurer 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!