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, <List<Cat>> est compatible avec <List<Animal>> (contravariant), tandis que <String>
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 :
public <T> void func1(T v) {} public <U> 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 <T extends Comparable<T>> void func1(T v) {} public <T extends Number> void func2(T v) {}
Règle 3 : Paramètres de type contravariant et covariant
<T>
est compatible avec <S>
. Par exemple, <List<Cat>>
est compatible avec <List<Animal>>
. <T>
类型兼容于 <S>
。例如<List<Cat>>
兼容于 <List<Animal>>
。<S>
类型兼容于 <T>
。例如<String>
兼容于 <Object>
。实战案例
考虑以下代码:
public <T extends Animal> void 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 <S>
est compatible avec <T>
. Par exemple, <String>
est compatible avec <Object>
.
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. 🎜🎜🎜Conclusion🎜🎜🎜Il 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!