为何有了接口,我们还需要使用泛型?因为即便使用了接口,对于程序的约束还是太强。因为一旦指明了接口,就会要求我们的代码使用特定的接口,而我们的目的是希望编写出更通用的代码,是要使代码能够应用于某种不确定的类型,而不是一个具体的接口或类。 泛型类 泛型的目的是用来指定容器要持有什么类型的对象,而由编译器来保证类型的正确性。使用泛型参数 T,用尖括号括住,放在类后。 /** * 使用泛型参数 T,用尖括号括住,放在类后 */ public class Tested { private T t; public void set(T t) { this.t = t; 泛型是Java编程中一种强大的工具,它允许程序员在定义类、接口以及方法时使用类型参数,从而提高代码的灵活性和可复用性。泛型的主要目标是提供编译时类型安全,确保在运行时避免类型转换异常。通过使用泛型,我们可以创建能够处理多种数据类型的通用代码,同时保持类型检查的严格性。 在Java中,泛型的使用主要体现在以下几个方面: 1. 泛型类:泛型类是带有类型参数的类,如例子中的`Tested<T>`。这里的`T`就是一个类型参数,代表某种未确定的类型。当我们实例化泛型类时,可以具体指定`T`的类型,如`Tested<Test1th>`,这样编译器会确保`Tested`对象只能持有`Test1th`类型的实例。`Tested`类中的`set`和`get`方法利用`T`作为参数和返回类型,确保了类型的一致性。 2. 多参数泛型:在`Tested`类的另一个版本中,我们看到可以同时指定多个类型参数,如`Tested<A, B>`,这样类就可以持有两种不同类型的对象。通过这种方式,我们可以创建更加灵活的类结构,以适应不同的数据组合需求。 3. 泛型接口:泛型也可以应用于接口,如`Iterable<T>`。当实现这个接口时,我们需要指定`T`的具体类型。在示例中,`Tested`实现了`Iterable`接口,这意味着它可以被用于循环遍历。`Tested`的`iterator()`方法返回了一个匿名内部类,这个内部类实现了`Iterator`接口,并使用泛型`TestBase`,确保返回的迭代元素都是`TestBase`的实例。 4. 泛型边界:在某些情况下,我们可能希望限制类型参数的类型。例如,我们可以指定`T extends SomeClass`,表示`T`必须是`SomeClass`或者`SomeClass`的子类。这称为类型参数的边界,它增强了泛型的灵活性,同时保证了类型的安全性。 5. 擦除:Java的泛型在编译后会被类型擦除,这意味着在运行时,所有的泛型信息都会丢失。但是,编译器会在源代码中插入适当的类型检查和转换,以确保类型安全。因此,尽管在运行时无法直接访问泛型信息,但编译时的类型检查仍然有效。 6. 类型转换:虽然泛型可以减少运行时的类型转换,但在某些情况下,比如从泛型集合获取元素时,可能仍需要进行类型转换。然而,由于编译器的检查,这些转换通常都是安全的。 总结来说,泛型提供了一种强大的方式来处理各种类型的数据,增强了代码的灵活性和安全性。通过理解并熟练运用泛型、边界和擦除,我们可以编写出更加健壮且易于维护的Java应用程序。在实际开发中,泛型被广泛应用于集合框架、数据结构和算法实现,以及自定义的容器类和工具类等。




























剩余7页未读,继续阅读

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整

- 粉丝: 4
- 资源: 932
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于Flask和HTML的旅游建议网站.zip
- draw.io(现在称为diagrams.net)
- (源码)基于Python的微信智能聊天机器人.zip
- (源码)基于物联网和Kodular平台的实时水位监测系统.zip
- Kettle,全称Pentaho Data Integration(PDI),是一款开源的数据集成工具,由社区驱动,广泛用于数据清洗、转换和加载任务 它提供了图形化的用户界面Spoon,让用户无需编程
- (源码)基于OpenCL的图像处理系统.zip
- (源码)基于微前端架构的qiankun框架的多项目集成系统.zip
- 基于STM32F103C8T6的智能家居控制系统.zip
- (源码)基于C++的Reactor模式Web服务器.zip
- 基于STM32F103C8T6的智能家居控制系统.zip
- (源码)基于Arduino的智能环境监控与日志系统.zip
- (源码)基于Python的房价信息分析系统.zip
- greenplum-cc-web-6.11.1-gp6-rhel7-x86_64.zip
- (源码)基于物联网的德里地铁实时追踪系统.zip
- 工作总结汇报.pptx
- (源码)基于Arduino的智能设备开发模板.zip


