• 浅理解java中的泛型


    目录

    1.什么是泛型

    泛型是 Java 编程语言的功能,允许程序员编写参数化代码。

    泛型可确保集合不会存储错误的对象类型。

    2.代码解释

    目前我所了解使用到的,大部分是应用在集合上的,所以我打算用集合来演示。

    泛型的使用:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ajn88ddr-1666195994578)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221020000437615.png)]

    2.1前期准备

    在开始之前,创建一个用户类User,

    public class User {
        private String name;
        private String sex;
        private Integer age;
        private String email;
        private Long phoneNumber;
    	public User(){}
        public User(String name, String sex, Integer age, String email, Long phoneNumber) {
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.email = email;
            this.phoneNumber = phoneNumber;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", sex='" + sex + '\'' +
                    ", age=" + age +
                    ", email='" + email + '\'' +
                    ", phoneNumber=" + phoneNumber +
                    '}';
        }
    
       
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    2.2集合不带泛型

    		List listName = new ArrayList();
            listName.add("123");
            listName.add(12345);
            listName.add(9999999999L);
            listName.add(1==1);
            listName.forEach(x ->{
                System.out.println(x);
            });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    这样虽然是正确,但是里面的数据杂乱无章,什么类型的数据都可以往集合中添加(String,int,long,boolean,User……)

    如果是这样的话,在我们开发当中会出现一些问题,如果不小心将其他我们不想要的数据加入,那将会很麻烦。

    2.3集合使用泛型

    		List<User> userList = new ArrayList();
            //模拟数据
            User user1 = new User("张三", "男", 21, "zhangsan@123.com", 18253847430L);
            User user2 = new User("李四", "男", 21, "lisi@999.com", 15555558888L);
            User user3 = new User("王五", "男", 21, "wangwu@126.com", 18888888888L);
            User user4 = new User("赵六", "男", 21, "zhaoliu@163.com", 1666666666L);
            User user5 = new User("李七", "男", 21, "liqi@qq.com", 11111111111L);
            //向集合中添加数据
            userList.add(user1);
            userList.add(user2);
            userList.add(user3);
            userList.add(user4);
            userList.add(user5);
            //查看集合数据
            userList.forEach(user -> System.out.println(user));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    是没有问题的

    但是如果添加的不是泛型规定的类型则会报错。
    在这里插入图片描述
    不仅是自定义的可以泛型,如果是String,Integer都是可以用的
    在这里插入图片描述
    在这里插入图片描述

    3.总结

    由于对更安全的代码的需求,泛型被添加到Java编程语言中。实际上,它增加了代码的稳定性,因为潜在的错误可以在编译时检测到。以下是使用泛型的好处:

    1.编译时更强的类型检查:保证没有向集合中添加错误的类型。更强的类型检查使代码更具可读性;

    2.消除强制转换:有些时候对象与集合中的内容不匹配需要强制转换,但如果使用泛型,我们可以泛化代码以实现可重用性,并且使代码更加安全。

    建议:如果使用集合,就加上泛型。

  • 相关阅读:
    【Linux】生产消费模型 + 线程池
    Redis无感升级(从低版本3.0-升级至6.0+)
    Python爬虫技巧:使用代理IP和User-Agent应对反爬虫机制
    【PCIE720】基于PCIe总线架构的高性能计算(HPC)硬件加速卡
    error LNK2001: 无法解析的外部符号 “public: __thiscall std::
    学信息系统项目管理师第4版系列18_采购管理
    Redis
    2023年中国研究生数学建模竞赛赛题浅析
    【前端杂文】 axios的AxiosResponse分析
    Pytoch随笔(光速入门篇)
  • 原文地址:https://blog.csdn.net/weixin_45909221/article/details/127418680