Java在JDK1.5中引入泛型这一新特性,泛型的本质是参数化类型,也就是说,可以把数据类型指定为一个参数,这个参数类型可以用在类、接口和方法的创建中。泛型在Java语言的Collection中大量地被使用,例如List允许被插入任意类型的对象,在程序中可以声明List、List等更多的类型。

那么,什么是参数化类型?其实,参数是一个外部变量。对于一个方法,其参数都是从外部传入的,那么,参数的类型是否也作为一个参数,在运行时决定呢?答案是肯定的,泛型就可以做到这一点。

泛型为程序员带来了很多编程好处,具体有以下两点内容:
1)简单安全。一方面,由于在编译时会进行类型检查,因此提高了安全性,另一方面,在编译阶段就可以把错误报出来,从而减轻了程序员的调试工作量。
2)性能的提升。以容器为例,在没有泛型的时候,由于容器返回的类型都是Object类型,因此需要根据实际情况将返回值强制转换为期望的类型。在引入泛型以后,由于容器中存储的类型在声明的时候可以确定,因此对容器的操作不需要进行类型转换,这样做的好处是一方面增强了代码的可读性,降低了程序出错的可能性,另一方面也提高了程序运行的效率。

泛型提供了如下几个方面的功能:
1)避免代码中的强制类型转换。
2)限定类型。在编译时提供一个额外的类型检查,避免错误的值被存入容器。
3)实现一些特别的编程技巧。例如:提供一个方法用于拷贝对象,在不提供额外方法参数的情况下,使返回值类型和方法参数类型保持一致。

java泛型,“参数化参数”的基本理解相关推荐

  1. 深入理解 Java 泛型

    首先提个问题: Java 泛型的作用是什么?泛型擦除是什么?泛型一般用在什么场景? 如果这个问题你答不上来,那这篇文章可能就对你有些价值. 读完本文你将了解到: 什么是泛型 为什么引入泛型 泛型的使用 ...

  2. Java集合泛型作为参数时,使用中的一些问题。包括但不限于PECS原则

    目录 泛型中的PECS原则以及使用注意 一.泛型中的型变(协变.逆变.不可变) 1. 什么是型变 2. 什么是协变(Covariance) 3. 什么是逆变(Contravariance) 4. 不可 ...

  3. Java泛型中extends和super的理解(转)

    E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定 ...

  4. 深入理解Java泛型

    作为一个 Java 程序员,日常编程早就离不开泛型.泛型自从 JDK1.5 引进之后,真的非常提高生产力.一个简单的泛型 T,寥寥几行代码, 就可以让我们在使用过程中动态替换成任何想要的类型,再也不用 ...

  5. java 泛型参数_[基础]-Java泛型

    一.概述 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的 ...

  6. java相关求助---Java泛型的理解与等价实现---------没有完全明白啊...请大神指导...

    1.泛型是Java 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的        创建中,分别称为泛型类.泛型接口.泛型方法. ...

  7. java 泛型参数写法_参数化类型——Java泛型

    参数化类型: 数据的类型会影响程序的行为. 类型限定: 程序支持的数据类型是有范围的. Java里的泛型: GenericType 当我们写出下面这样的代码时,Parent是一个泛型类型,它的参数范围 ...

  8. java泛型之自限定类型和参数协变

    java泛型之自限定类型和参数协变 本博文参考<thinking in java>第四版第15张"泛型"中的相关内容和网络上的各种博客,本文也是几个月前的一篇博文&qu ...

  9. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

最新文章

  1. Linux C编程--进程间通信(IPC)5--System V IPC 机制2--信号量
  2. 内存分段分页机制理解_深度干货 | 真棒! 20 张图揭开内存管理的迷雾,瞬间豁然开朗...
  3. nginx upstream setting
  4. qml dockwidget窗口停靠
  5. 数据库系统(三)——数据库安全性控制
  6. 十五. Python基础(15)--内置函数-1
  7. Win7/Win8/Win8.1下配置apache+php运行缓慢问题解决方法
  8. java 代码效率_提高代码性能效率总结(一)--Java
  9. java 视频播放_java创建简易视频播放器
  10. 读书笔记1——《用户故事与敏捷方法》
  11. Scrapy0.24.1_中文文档
  12. 如何重新注册VMware Update Manager(VUM)至vCenter Server中
  13. cute-cnblogs 自定义博客园样式美化二期来啦~
  14. word打开文档很久很慢_win7系统打开word文档很慢需要等待很长时间的五种解决方法...
  15. 十大管理概念(背诵)
  16. picpick截图工具截取滚动窗口只滚动一次就结束了解决办法
  17. Java8-19新特性一览 ,认识全新的前沿技术
  18. 基于李雅普诺夫函数的跟踪控制(二)
  19. AV1基于机器学习的变换块快速划分
  20. Android Factory Images for Nexus Devices

热门文章

  1. 如何在sh的字符串中包含换行符?
  2. MySQL字符串替换
  3. ros indigo 学习笔记
  4. python http请求_python模拟http请求
  5. 获取textarea每一行的内容_PLC编程的基本原则和方法,64页内容介绍PLC编程,值得收藏...
  6. SpringBoot:Unable to start LiveReload server(已解决)
  7. 粘性定位(HTML、CSS)
  8. CSS三角强化的巧妙运用(HTML、CSS)
  9. MySQL中的常用函数和聚合函数
  10. 使用Mysql进行数据管理