当前位置: 首页 > news >正文

Java基础 - 泛型(基本概念)

文章目录

  • 基本概念
    • 参数化类型
    • 类型安全和编译时检查
  • 为什么需要泛型?
    • 解决类型安全问题
    • 避免重复代码
    • 提高可读性和维护性

泛型(Generics)是编程语言中一种支持参数化类型的特性,允许在定义类、接口、方法时使用类型参数(Type Parameters),而在使用时指定具体的类型。泛型的核心目标是提高代码的 类型安全性、可重用性 和 可读性。

基本概念

参数化类型

  • 定义时不确定类型:在编写类、接口或方法时使用类型占位符(如 <T>),实际使用时再传入具体类型(如 String、Integer)。
  • 示例:
public class Box<T> {
    private T content;
    public void setContent(T content) { this.content = content; }
    public T getContent() { return content; }
}
// 使用
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello"); // 只能存放 String

类型安全和编译时检查

编译器可以检查参数类型是否正确,并在编译时而不是运行时捕获类型错误。

为什么需要泛型?

解决类型安全问题

在泛型出现之前,Java 集合类(如 ArrayList、HashMap)默认使用 Object 类型存储元素。这导致两个问题:

  • 强制类型转换:从集合中取出元素时需要显式转换类型。
  • 运行时类型错误风险:如果类型不一致,会抛出ClassCastException

示例:没有泛型的代码

List list = new ArrayList();
list.add("Hello");
list.add(10); // 编译通过(这里的 10 会被自动装箱为 Integer,但类型不一致会埋下隐患)

// 取出元素时可能出错
String str = (String) list.get(1); // 运行时抛出 ClassCastException

通过泛型改进后:

List<String> list = new ArrayList<>();
list.add("Hello");
list.add(10); // 编译时就会报错!直接阻止非法操作
String str = list.get(0); // 无需强制类型转换

避免重复代码

在没有泛型时,如果要支持不同类型,需要为每种类型编写相似的代码(如分别实现 IntegerBoxStringBox)。

泛型的代码复用:

// 一个泛型类支持所有类型
Box<Integer> intBox = new Box<>();
Box<String> strBox = new Box<>();

提高可读性和维护性

泛型让代码的意图更明确,例如 Map<String, Integer> 清楚地表示“键是String,值是Integer”。

  • 清晰的类型约束:直接声明数据类型,避免混乱的类型转换。
  • 自解释性:代码能直接表达其设计的通用性。

相关文章:

  • 【25软考网工笔记】第二章 数据通信基础(1)信道特性 奈奎斯特 香农定理
  • 使用amos进行简单中介效应分析
  • MySQL 进阶 - 2 ( 9000 字详解)
  • Next.js 简介
  • 自行搭建一个Git仓库托管平台
  • NLP高频面试题(四十一)——什么是 IA3 微调?
  • 国家优青ppt美化_青年科学基金项目B类ppt案例模板
  • 【WPF】自定义控件:ShellEditControl-同列单元格编辑支持文本框、下拉框和弹窗
  • 【解决方案】vscode 不小心打开了列选择模式,选择时只能选中同一列的数据。
  • 【学习笔记】头文件中定义函数出现重复定义报错
  • 5G_WiFi_CE_DFS
  • 嵌入式---电机分类
  • 用流量和用wifi的ip地址一样吗?深度解读
  • 深入解析 KaiwuDB 源码:架构设计与核心模块实现
  • SQL注入攻击样例数据参考(全场景分类解析)
  • 一组可能的机器学习问题列表
  • Python中的eval()函数详解
  • 【蓝桥杯】单片机设计与开发,第十二届
  • leetcode:2839. 判断通过操作能否让字符串相等 I(python3解法)
  • 小白学习java第12天:IO流之转换流
  • 新疆建设云网站/寻找客户资源的网站
  • 武汉企业招聘信息网/seo网站推广助理
  • 国外网站如何做推广/公司网站模板
  • 网站建设发票的税点/网络推广免费平台
  • 盗号和做钓鱼网站那个罪严重/百度网址大全 旧版本
  • 沈阳专业网站制作/企业推广策划公司