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)相关推荐

  1. Java泛型Generics

    转载请标明出处: http://blog.csdn.net/wu_wxc/article/details/51493181 本文出自[吴孝城的CSDN博客] 泛型 泛型是JDK 5中引入的一个新特性 ...

  2. Java 泛型(Generics) 综述

    一. 引子 一般的类和方法,只能使用具体类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 多态 算是一种泛化机制,但对代码的约束还是太强 ...

  3. Java 泛型 (generics) 的使用

    泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合.在使用了泛型的集合中,遍历时不必进行强制类型转换.JDK提供了支持泛型的编译器,将运行时的类型检查提前到了编译时执行,提高了代码可读性和 ...

  4. 泛型java博客园,Java深度历险之Java泛型

    Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在JD ...

  5. java 泛型 class t_java 泛型中classT 和T的区别是什么?

    public boolean edit(T entity) 和public T get(Class c, Serializable id)中这两种参数的定义和调用有什么区别? public boole ...

  6. java泛型常用特点_?你必须知道的Java泛型

    前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin3923282... 种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了,但是怀旧一下,欢 ...

  7. java 泛型参数_Java泛型

    一.概述 Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型.使用泛型机制编写的程序代码要比那些杂乱地使用Obje ...

  8. java泛型中的t_java泛型中什么是T?

    java泛型中什么是T? 发布时间:2020-05-06 13:55:03 来源:亿速云 阅读:118 作者:小新 这篇文章主要为大家详细介绍了java泛型中什么是T,文中示例代码介绍的非常详细,具有 ...

  9. Java泛型专题之2、聊一聊-JAVA 泛型中的通配符 T,E,K,V,?

    目录 1. 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说 ...

  10. java的知识点23——泛型Generics、Collection接口、List特点和常用方法、 ArrayList特点和底层实现

    泛型Generics 一般通过"容器"来容纳和管理数据.程序中的"容器"就是用来容纳和管理数据. 数组就是一种容器,可以在其中放置对象或基本类型数据. 数组的优 ...

最新文章

  1. 宝宝都能看懂的机器学习世界
  2. 听Ruby之父畅谈编程语言的设计
  3. java通过ftp方式上传_通过FTP以Java方式上传文件
  4. 车小米O2O保养平台搭建完毕
  5. 二维数组动态分配内存
  6. mongodb 查看数据库和空间大小
  7. 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则
  8. 变量使用self.foo还是_foo
  9. 判断数组是否有重复值
  10. 决策树1 -- ID3_C4.5算法
  11. 测试专家谈IT从业人员修炼之道
  12. 一行代码让纯文本编辑器秒变 Markdown 编辑器
  13. paip.c++ 常用类库attilax总结
  14. 桥梁大师BridgeMaster2019带箱梁 USB加密狗发布
  15. [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  16. mysql索引类型normal,unique,full text,索引方式btree索引和hash
  17. html文件变成桌面背景,将HTML文档设置为Windows桌面背景
  18. oracle应付创建会计科目,R12 应付创建会计科目警告【已解决】
  19. 计算机应用中dss是,基于数据仓库的决策支持系统(DSS)-计算机应用专业论文.docx...
  20. SQL数据库查询 左连接、右连接、内连接 实例

热门文章

  1. 怎么从cad的表格弄到excel里转换成Excel表格?
  2. MTK 平台CTP bring up
  3. 收银小票编码生成java_Java练习题——打印购物小票
  4. @WebFilter和@Component一起使用导致urlPatterns不起作用
  5. lua 10000以内素数的个数
  6. C#Winform中DataGridView控件根据鼠标左右键获取单元格值或者行列
  7. STC89C52串口向电脑发送数据
  8. IDEA常用快捷键罗列,分享分享
  9. DeviceIoControl使用说明
  10. 如何向gitee开源项目提交代码