【Java】泛型(Generics)
What |
顾名思义,泛型:一般类型,也就是说可以为任何类型,泛型的本质是“参数化类型”,也就是说所操作的数据类型被指定为一个参数。泛型是在JDK1.5中引入的特性。
Why |
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型,而不是在运行时才出现错误。在实际编程中,会出现很多这样的情况:同样的方法,只是数据类型不同。现在如果想申明一个Box类,可以存放所有基本数据类型包装类的对象,可以有以下写法:
public class Box {private Integer object1;public void set(Integer object1) { this.object1 = object1; }public Integer get() { return object1; }private Double object2;public void set(Double object2) { this.object2 = object2; }public Double get() { return object2; }
}
这样编程,会出现大量的冗余代码,我们知道Java中的所有类都继承于Object类,根据“里式替换原则”,可以写成这样:
public class Box {private Object object;public void set(Object object) { this.object = object; }public Object get() { return object; }
}
既然申明了Object类型,意味着除了8个原始数据类型,你可以传递其他任意类型。如果set了一个Integer对象,get用作String类型,程序在运行时会报错,但是却能通过编译的类型检查。将上面的Box类改用泛型来实现就可以很好的解决这个问题。
/*** Generic version of the Box class.* @param <T> the type of the value being boxed*/
public class Box<T> {// T stands for "Type"private T t;public void set(T t) { this.t = t; }public T get() { return t; }
}public static void main(String[] args) {Box<Integer> integerBox = new Box<Integer>();Box<String> stringBox = new Box<String>();integerBox.add(new Integer(10));stringBox.add(new String("泛型测试"));System.out.printf("整型值为 :%d\n\n", integerBox.get());System.out.printf("字符串为 :%s\n", stringBox.get());
}
使用泛型有以下好处:
编译时强类型检查
无需手动进行类型转换
可以实现复用,编写通用算法
【Java】泛型(Generics)相关推荐
- Java泛型Generics
转载请标明出处: http://blog.csdn.net/wu_wxc/article/details/51493181 本文出自[吴孝城的CSDN博客] 泛型 泛型是JDK 5中引入的一个新特性 ...
- Java 泛型(Generics) 综述
一. 引子 一般的类和方法,只能使用具体类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 多态 算是一种泛化机制,但对代码的约束还是太强 ...
- Java 泛型 (generics) 的使用
泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合.在使用了泛型的集合中,遍历时不必进行强制类型转换.JDK提供了支持泛型的编译器,将运行时的类型检查提前到了编译时执行,提高了代码可读性和 ...
- 泛型java博客园,Java深度历险之Java泛型
Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在JD ...
- java 泛型 class t_java 泛型中classT 和T的区别是什么?
public boolean edit(T entity) 和public T get(Class c, Serializable id)中这两种参数的定义和调用有什么区别? public boole ...
- java泛型常用特点_?你必须知道的Java泛型
前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin3923282... 种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了,但是怀旧一下,欢 ...
- java 泛型参数_Java泛型
一.概述 Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型.使用泛型机制编写的程序代码要比那些杂乱地使用Obje ...
- java泛型中的t_java泛型中什么是T?
java泛型中什么是T? 发布时间:2020-05-06 13:55:03 来源:亿速云 阅读:118 作者:小新 这篇文章主要为大家详细介绍了java泛型中什么是T,文中示例代码介绍的非常详细,具有 ...
- Java泛型专题之2、聊一聊-JAVA 泛型中的通配符 T,E,K,V,?
目录 1. 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说 ...
- java的知识点23——泛型Generics、Collection接口、List特点和常用方法、 ArrayList特点和底层实现
泛型Generics 一般通过"容器"来容纳和管理数据.程序中的"容器"就是用来容纳和管理数据. 数组就是一种容器,可以在其中放置对象或基本类型数据. 数组的优 ...
最新文章
- 宝宝都能看懂的机器学习世界
- 听Ruby之父畅谈编程语言的设计
- java通过ftp方式上传_通过FTP以Java方式上传文件
- 车小米O2O保养平台搭建完毕
- 二维数组动态分配内存
- mongodb 查看数据库和空间大小
- 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则
- 变量使用self.foo还是_foo
- 判断数组是否有重复值
- 决策树1 -- ID3_C4.5算法
- 测试专家谈IT从业人员修炼之道
- 一行代码让纯文本编辑器秒变 Markdown 编辑器
- paip.c++ 常用类库attilax总结
- 桥梁大师BridgeMaster2019带箱梁 USB加密狗发布
- [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
- mysql索引类型normal,unique,full text,索引方式btree索引和hash
- html文件变成桌面背景,将HTML文档设置为Windows桌面背景
- oracle应付创建会计科目,R12 应付创建会计科目警告【已解决】
- 计算机应用中dss是,基于数据仓库的决策支持系统(DSS)-计算机应用专业论文.docx...
- SQL数据库查询 左连接、右连接、内连接 实例