Java 泛型机制

本文介绍Java泛型机制,展示其如何简化代码编写,提高代码通用性。通过示例演示如何使用泛型避免重复代码,实现对不同类型的集合进行通用操作。同时,解释泛型的灵活性及限制,包括上限、下限的应用,以及如何通过泛型参数实现类型安全的自定义方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java泛型机制实际是一个安全机制。个人觉得泛型因其灵活性可以结合许多东西,编写出更加简便,通用的程序。本篇文章只是介绍下基本的用法,更多巧妙的组合还在于开发者的灵活运用。

泛型的好处最明显一点就是不用我们再进行强制类型转换了,暗处的好处就是Java帮助我们进行了类型检测,这才是最重要的一个好处。

下面通过一个示例介绍下泛型编写出的代码是如何的通用。现在需要打印List<String>,List<Integer>这两个集合,如果不使用泛型的话,需要为每一个集合都写一个输出方法。如果我想打印50个不同类型的LIst呢?难道需要写50个输出方法吗?如果使用泛型的话,只需一个方法就可以搞定。

    static <T> void printList(List<T> list) {
        Iterator<T> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
或者这样:

    static void printList(List<?> list) {
        Iterator<?> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
甚至夸张一些可以这样:

    static void printList(Collection<?> collection) {
        Iterator<?> it = collection.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
这个连Set集合也可以打印了。

有人会想着这样写:

    static void printList(List<Object> list) {
        Iterator<Object> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }

很遗憾这么写是完全行不通的,是错误的。这也是在使用泛型非常需要注意的一点。List<Object>是不能接受List<String>,List<Integer>这些参数的。

泛型还有一种比较强大的应用方式。自定义一个People类和一个Student类,Student是People类的子类。现在有一个方法,只想接受People类以及其子类,其他的类型拒绝接受,如何写呢?

    static void doSomething(List<? extends People> peoples) {
        Iterator<? extends People> it=peoples.iterator();
        while (it.hasNext()) {
            // do some People special method
            People p=it.next();
            //p.X();
        }
    }

这也叫泛型的上限,当然还有下限。即:<? super People>,只能接受People及其父类。

泛型的使用十分的灵活,我只是新手入门,只是体会到了部分的好处,更多泛型的使用还需自己体会,思考。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值