Maison> Java> javaDidacticiel> le corps du texte

Java泛型的上界和下界通配符怎么使用

王林
Libérer: 2023-05-20 08:23:01
avant
1460 Les gens l'ont consulté

上界

泛型的上界指定了类型参数必须是某个类的子类或者实现了某个接口。它的语法形式为T extends B,其中T是泛型类型参数,B是上界类型。例如,下面的代码展示了一个泛型类Box,它的类型参数T必须是Number或其子类:

public class Box { private T value; public Box(T value) { this.value = value; } public T getValue() { return value; } }
Copier après la connexion

在上面的代码中,我们使用了extends关键字来指定泛型类型参数的上界类型,这意味着泛型类型参数必须是Number或其子类。这样,我们就可以使用Box类来存储IntegerDoubleFloat等类型的值,因为它们都是Number的子类。另外,通过使用泛型的上界,我们可以确保Box类的实例中只存储Number类型的值,避免了类型转换异常的风险。

在使用泛型的时候,如果我们传入一个类型不符合上界限制的参数,则会在编译时发生错误,例如:

Box box = new Box<>("Hello World"); // 编译错误:String 不是 Number 的子类
Copier après la connexion

下界

泛型的下界指定了类型参数必须是某个类的超类或者是某个接口的实现类。它的语法形式为T super B,其中T是泛型类型参数,B是下界类型。下面是一个示例,展示了一个泛型类Box,它的类型参数T必须是Object或其超类:

public class Box { private T value; public Box(T value) { this.value = value; } public T getValue() { return value; } }
Copier après la connexion

在上面的代码中,我们使用了super关键字来指定泛型类型参数的下界类型,这意味着泛型类型参数必须是Object或其超类。这样,我们就可以使用Box类来存储ObjectStringIntegerDouble等类型的值,因为它们都是Object的子类。另外,通过使用泛型的下界,我们可以确保Box类的实例中存储的值都是Object类型,避免了类型转换异常的风险。

在使用泛型的时候,如果我们传入一个类型不符合下界限制的参数,则会在编译时发生错误,例如:

Box box = new Box<>(123); // 编译错误:Integer 不是 Object 的超类
Copier après la connexion

上下界通配符

有时候,我们需要在泛型中同时使用上界和下界的限制,此时可以使用通配符?来表示未知类型。例如,下面的代码展示了一个泛型方法copy,它可以将一个数组的元素复制到另一个数组中:

public static  void copy(List src, List dest) { for (T t : src) { dest.add(t); } }
Copier après la connexion

在上面的代码中,我们使用了通配符?来表示未知类型,它可以同时满足src参数是T类型或其子类,dest参数是T类型或其超类的限制条件。这样,我们就可以将任意类型的元素复制到另一个列表中了。通过使用上下界通配符,我们可以更加灵活地定义泛型方法,同时保证类型安全。

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!

Étiquettes associées:
source:yisu.com
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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!