看了这篇Java 泛型通关指南,再也不怵满屏尖括号了

本文详细介绍了Java泛型的概念、定义、工作原理以及使用限制,包括泛型类、接口、方法,类型通配符的上下界,以及泛型在实际编程中带来的类型安全性和编译时错误检查。通过学习,读者将能更好地理解和运用Java泛型,提升代码质量和效率。
摘要由CSDN通过智能技术生成

在前面介绍 Java 集合框架里的各种容器的时候,我们已经接触到泛型了,那时我们对泛型的简单理解是,类似这样 ArrayList 声明一个 ArrayList 实例,就给它做了个类型限制,让能让它其中只能放入 String 类型的元素。泛型在 Java 中的应用相当广泛,所以我们特地开辟一个章节专门讲讲 Java 泛型的工作原理和应用。

泛型的英文名叫做 generics,一系列和泛型相关的名词都是以 generic 为前缀的,比如我们马上要学习的 Generic Method,Generic Types 等。

本文的内容大纲如下:

初识泛型

其实在使用 ArrayList 的时候我们已经接触过泛型了。如果不使用泛型在创建 ArrayList 实例时指定其元素的具体类型,那么 ArrayList 可以放入任何对象(Object的实例),但是 Java 编译器只知道 List 中存放的是 Object 实例。因此,在使用时需要将它们转换为对象所属的具体类(或接口)。

List list = new ArrayList();   // 没有泛型类型约束,列表元素默认是Object类型的

list.add(new String("First MyObject"));

MyObject myObject = (String) list.get(0);  // 使用列表元素时需要进行类型转换

for(Object obj : list){
    // 使用前进行类型转换
    String theMyObject = (String) anObject;

   ......
}

使用 Java 泛型可以限制插入到 ArrayList 中的对象类型,且从 ArrayList 中检索对象时无需再做类型转换。

List<String> list = new ArrayList<>();

list.add(new String("First MyObject"));

String myObject = list.get(0);

for(String obj : list){
   ......
}

泛型的语法就是在支持泛型的类型上,给出类型的定义。List 接口是支持泛型的,类型就是List里允许的元素的类型。创建 List 实例和引用的时候,都可以指定泛型对应的类型,比如这个例程里告诉编译器 List 元素的类型是 String。如果不指定,那就是Object这个默认类型,所以第一个例程用的 List 的元素就是 Object 类型。

泛型定义

“Java 泛型”这个技术术语,表示一组与泛型类型和方法的定义和使用相关的语言特性。在 Java 中,泛型类型(Generic Typs)或泛型方法(Generic Method)与常规类型和方法的不同之处在于它们具有类型参数。

通过提供替换形式类型参数的实际类型参数,泛型类型被实例化,形成参数化类型。像 LinkedList 这样的类是一个泛型类型,它有一个类型参数 E 。实例,例如 LinkedList 或 LinkedList,被称为参数化类型,而 String 和 Integer 是各自的实际类型参数。

为什么使用泛型

与上面 ArrayList 的例程相似,如果仔细了解 Java 集合框架中的类,会发现他们的方法大多都支持泛型类型参数,如果不使用泛型这些类提供的方法的参数和返回值都会是 Object 类型的。现在&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值