泛型:JDK1.5版本出现的一个安全机制。
好处:将运行时出现的问题(ClassCastException)转移到了编译时期。
避免了强转的麻烦。
格式:通过<>在内指定操作的引用数据类型。
泛型可以定义在类上。
早期:
class Tool
{
private Object obj;
public void setObj(Object obj)
{
this.obj = obj;
}
public Object getObj()
{
return obj;
}
}
main()
{
Tool t = new Tool();
t.setObj(new Worker());//当往里传递的参数为t.setObject(new Student());//编译通过,运行出现ClassCastException
Worker w = (Worker)t.getObj();//必须要强转
}
现在:通过泛型类来完成。
class Tool<Q>
{
private Q obj;
public void setObj(Q obj)
{
this.obj = obj;
}
public Q getObj()
{
return obj;
}
}
main()
{
Tool<Worker> t = new Tool<Worker>();
t.setObject(new Worker());//如果传入t.setObject(new Student());编译时会出现失败。
//那么就是将运行时出现的问题转移到了编译时期。
Worker w = t.getObj();//不需要在进行强转。
}
什么时候定义泛型类呢?
当类中要操作的引用数据类型不确定的时候,就使用泛型类。
在使用泛型类时,只有在建立泛型类对象时,才可以指定具体要操作的引用数据类型。
那么该对象在调用方法时,操作的类型都是相同的。
如果想方法在调用的时,操作的类型不确定,而且不相同,可以将泛型定义在方法上。
class Utils
{
public <T> void printInfo(T t)
{
}
public <Q> void show(Q q)
{
}
}
泛型的限定:
1,? extends E: 接收的是E类型对象或者E的子类型对象。
2,? super E:接收的是E类型对象或者E的超类,直至Object对象
分享到:
相关推荐
标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...
java-泛型-面试题.docx
Java 泛型是Java编程语言中的一个重要特性,它在2004年随着...这个视频教程"29-API-集合框架-泛型-使用"应该会深入浅出地讲解这些概念,对于想要提升Java编程技能的初学者或有经验的开发者来说,都是很好的学习资源。
Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力...
Java 泛型是JDK 1.5引入的一项重要特性,极大地增强了代码的类型安全性和重用性。泛型允许我们在编程时指定容器(如集合)所存储的对象类型,从而在编译时期就能捕获类型错误,避免了运行时的ClassCastException。 ...
包含11个Word文档,包含了C#的集合、字符串和正则表达式、泛型、内存管理和指针、反射、线程和同步、.NET的安全性、COM的互相操作性、文件和注册表操作、使用GDI+画图、Windows Presentation Foundation。...
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化...
补充知识:泛型1---马克-to-win java视频的详细描述与介绍
在Haskell中,泛型编程是一种重要的编程技术,它允许我们编写通用代码,可以处理多种数据类型。"basic-sop" 库就是针对这一点的一个实践示例,专门用于展示如何在Haskell中实现SOP(Signature of Product)风格的...
**Delphi泛型库——DGL详解** 在Delphi编程环境中,DGL(The Delphi Generic Library)是一个非常重要的工具,它为开发者提供了类型安全、高效且易用的泛型容器和算法。这个库的设计灵感来源于C++的STL(Standard ...
【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET
Ada 2012泛型套件可简化多核系统的迭代和递归并行性,并为单核和多核系统提供更安全的递归。 泛型包括适用于实时系统的Ravenscar兼容版本。 还包括石蜡,石蜡是一组有用的泛型,用于并行快速排序,快速傅立叶变换,...
补充知识2 ---马克-to-win java视频泛型的详细描述与介绍
### STL泛型编程知识点解析 #### 一、STL与泛型编程概述 - **STL简介**:STL(Standard Template Library,标准模板库)是C++标准库的一个重要组成部分,它提供了一系列高效的数据结构和算法实现。STL的核心包括...
### 集合与泛型知识点总结 #### 泛型概览 - **引入原因**:在Java 1.5及之后的版本中,引入了泛型这一特性,旨在提高集合类使用的安全性与灵活性。主要解决的问题包括: - **元素存储的安全性问题**:在非泛型...
在这个“TypeScript泛型类 - 把类作为参数类型的泛型类”示例中,我们将深入探讨如何利用泛型在TypeScript中创建灵活的、可复用的类模板。 泛型是TypeScript中的一个核心概念,它允许我们在编写代码时定义和重用...
本demo是自己写的一个命令模式的demo,设计到了一般的命令模式,命令模式的变种,万能命令,block封装命令,复合型命令等等,对整个demo我写了一篇文章:https://www.jianshu.com/p/266794b9eda6 ,有兴趣的可以对照着文章...
数学和泛型编程-高效编程的奥秘(英文版pdf)原名:From_Mathematics_to_Generic_Programming,作者;Alexander A. Stepanov Daniel E. Rose
day02【Collection、泛型】-笔记.md