首页 > 编程语言 >Java泛型大揭秘学习笔记

Java泛型大揭秘学习笔记

时间:2024-08-20 11:52:17浏览次数:14  
标签:Java 作用域 接口 类型 泛型 方法 揭秘

泛型概述
  • 引入背景:Java泛型在JDK 5中引入,目的是增强类型系统和表达能力。
  • 主要优势
    • 类型安全:编译时类型检查,避免运行时错误。
    • 消除强制类型转换:简化代码,提高可读性。
    • 提高代码重用性:创建通用代码,适应不同场景。
    • 性能提升:减少自动装箱拆箱操作。
泛型基础
  • 泛型定义:允许类型作为参数传递给类、接口、方法。
  • 泛型类:类名后跟类型参数,如ServerResponse<T>
  • 泛型接口:接口名后跟类型参数,实现时需指定或继承泛型。
  • 泛型方法:方法级别定义类型参数,提高代码通用性。
泛型作用域
  • 泛型类作用域:类成员使用,不适用于静态成员。
  • 泛型接口作用域:接口方法实现必须遵循泛型定义。
  • 泛型方法作用域:仅限于方法内使用。
泛型通配符与类型擦除
  • 边界约束
    • 上界<T extends 上界类>,限制泛型必须是上界类或其子类。
    • 下界<? super 下界类>,限制泛型必须是下界类或其超类。
  • 无界通配符<?>,代表不确定类型,用于类型未知或不关心具体类型的场景。
  • 类型擦除:运行时泛型信息被移除,使用Object替代。
泛型使用细节与问题
  • 可变形参<T> void print(T... params),接受任意数量参数。
  • 基础类型限制:泛型不支持基础数据类型,必须使用包装类。
  • 方法重载限制:多泛型参数无法实现方法重载。
  • 泛型继承性:泛型类型不具有继承性,避免类型安全性问题。
  • 实例化限制:无法直接基于泛型创建具体对象或数组。
  • 类型获取限制:无法直接获取泛型的Class对象,需通过数据或构造器传递。
泛型实战
  • Bean拷贝工具类
    • copy(Object source, Class<T> clazz):拷贝单个Bean对象。
    • copyList(List<T> sourceList, Class<T> clazz):拷贝Bean对象集合。
泛型机制总结
  • 重要性:泛型增强了Java语言的能力,提高了代码的安全性、灵活性和复用性。
  • 应用场景:泛型在Java 8等新特性中有广泛应用,需要在实践中不断探索。

标签:Java,作用域,接口,类型,泛型,方法,揭秘
From: https://blog.csdn.net/modelsetget/article/details/141354604

相关文章

  • 【Minecraft】京东云轻量云主机搭建我的世界联机服务器教程(Java版)
    一、Minecraft介绍《我的世界》(英语:Minecraft)是一款沙盒游戏,最初由瑞典游戏设计师马库斯·阿列克谢·泊松单独开发,随后由2009年成立的瑞典公司Mojang开发并发行。玩家可以在一个随机生成的3D世界内,以带材质贴图的立方体为基础进行游戏。游戏中的其他特色包括探索世界、采集资......
  • Java 设计模式
    23种设计模式创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模......
  • java中List列表转成子父集列表
    一、前言       在Java中,如果你有一个表示父子关系的列表,并且想要把这个列表转成一个子父集list列表树目录,一般来说想要把list列表转成一个子父集列表,这个对象需要在属性中必须要有几个字段,id(节点id)、parentId(指向父节点id)、children(子节点),通过三个字段可以组装成一......
  • 【第66课】Java安全&SPEL表达式&SSTI模版注入&XXE&JDBC&MyBatis注入
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • 【第67课】Java安全&JNDI&RMI&LDAP&五大不安全组件&RCE执行&不出网
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • 【第68课】Java安全&原生反序列化&SpringBoot攻防&heapdump提取&CVE
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • 在java中实现使用文件名称和文件路径从一个服务器保存文件到另一个服务器
    要在Java中实现从一个服务器下载文件并将其保存到另一个服务器的功能,你可以采用以下步骤:从源服务器下载文件。将文件保存到目标服务器。这里我们将使用Java的HttpURLConnection来处理HTTP请求,并使用FTP协议通过JSch或ApacheCommonsNet库将文件上传到另一台服务器。首先,你需......
  • Java单例模式
    定义单例模式(SingletonPattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这种模式的核心在于控制类的实例化过程,保证在任何时间点,一个类只有一个实例存在,并且这个实例可以被系统的所有其他部分通过一个公共的访问点访问。1、唯一实例:单......
  • 深入理解Java虚拟机(类加载机制)
    文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/类加载机制类加载机制的过程是什么呢?JVM把描述类的数据从Class文件中加载到内存中,并对其进行校验,解析,初始化......
  • Java计算机毕业设计的学生宿舍管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着高等教育规模的不断扩大,学生宿舍作为学生日常生活与学习的重要场所,其管理水平直接关系到学生的生活质量与校园安全。传统的学生宿舍管理方式往往......