登录
首页 >  文章 >  java教程

Java 中的通配符泛型是什么?

时间:2024-10-17 12:37:04 391浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个文章开发实战,手把手教大家学习《Java 中的通配符泛型是什么?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

Java 中的通配符泛型允许使用通配符来表示未知类型,有上限(? extends Type)和下限(? super Type)两种通配符:上限通配符表示通配符类型扩展自给定类型,限制泛型类型只能是给定类型的子类或本身。下限通配符表示通配符类型是给定类型的超类或本身,限制泛型类型只能是给定类型的父类或本身。

Java 中的通配符泛型是什么?

Java 中的通配符泛型

通配符泛型为 Java 泛型提供了使用通配符来表示未知类型的功能。它补充了对特定类型参数化的限制,允许编写更通用的代码。

上限和下限通配符

有两种通配符:上限和下限。

上限通配符(? extends Type):表示通配符类型扩展自给定类型。它限制了泛型类型只能是给定类型的子类或其本身。

下限通配符(? super Type):表示通配符类型是给定类型的超类或其本身。它限制了泛型类型只能是给定类型的父类或其本身。

语法

要使用通配符泛型,请在泛型声明中使用通配符符号(?),后跟可选的上限或下限界限:

 // 上限通配符
 // 下限通配符

实战案例

考虑一个比较两个列表元素的比较器:

public class Comparator {
    public int compare(T o1, T o2) {
        if (o1 == null || o2 == null) {
            return o1 == null ? o2 == null ? 0 : -1 : 1;
        }
        return o1.compareTo(o2);
    }
}

此比较器适用于任何实现了 Comparable 接口的类,但假设我们希望使用一个未知类型的单个比较器来比较不同的列表。我们可以使用上限通配符:

public class GenericComparator> {
    public int compare(T o1, T o2) {
        if (o1 == null || o2 == null) {
            return o1 == null ? o2 == null ? 0 : -1 : 1;
        }
        return o1.compareTo(o2);
    }
}

现在,这个比较器可以与任何类型(只要它是 Comparable)一起用于列表比较:

List list1 = Arrays.asList(1, 2, 3);
List list2 = Arrays.asList("a", "b", "c");

GenericComparator comparator = new GenericComparator<>();

System.out.println(comparator.compare(list1.get(0), list2.get(0))); // -1

终于介绍完啦!小伙伴们,这篇关于《Java 中的通配符泛型是什么?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>