展开全部

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一32313133353236313431303231363533e58685e5aeb931333361326262个参数。

比如,有一种类型为List,此时该List可以是任意类型的列表,如Integer,String等等。

如果把List类型改为List,则此时只表示整型的列表。

这就是所谓的将操作的数据类型指定为一个参数

那么这么做有什么好处呢?

比如原来我们有如下的程序:List myIntList = new LinkedList();// 1

myIntList.add(new Integer(0));// 2

Integer x = (Integer) myIntList.iterator().next();// 3

在第三行中进行了强制类型转换。这个类型转换不仅仅带来了混乱,它还可能产生一个运行时错误(run time error),因为程序员可能会犯错。

程序员如何才能明确表示他们的意图,把一个list中的内容限制为一个特定的数据类型呢?这是generics背后的核心思想。这是上面程序片断的一个泛型版本:List myIntList = new LinkedList(); // 1

myIntList.add(new Integer(0)); // 2

Integer x = myIntList.iterator().next(); // 3

注意变量myIntList的类型声明。它指定这不是一个任意的List,而是一个Integer的List,写作:List。我们说List是一个带一个类型参数的泛型接口(a generic interface that takes a type parameter),本例中,类型参数是Integer。我们在创建这个List对象的时候也指定了一个类型参数。

另一个需要注意的是第3行没了类型转换。

java泛化_JAVA泛化及为什么需要泛化相关推荐

  1. java8类型推导,鲜为人知的Java8特性:泛化目标类型推断,java8泛化

    鲜为人知的Java8特性:泛化目标类型推断,java8泛化 在浏览Java8的特性列表的时候,目标类型推断这个特别有趣的.鲜为人知的特性一下子吸引了我.Java语言的设计者通过它让我们减轻了一些使用泛 ...

  2. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  3. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  4. java 泛化_Java语言class类用法及泛化(详解)

    这篇文章主要介绍了Java语言class类用法及泛化(详解),大家都知道Java程序在运行过程中,对所有的对象进行类型标识,也就是RTTI.这项信息记录了每个对象所属的类.虚拟机通常使用运行时类型信息 ...

  5. java中什么是泛化_JAVA泛化及為什么需要泛化

    泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數. 比如,有一種類型為List,此時該List可以是任意類型的列表,如Integer,String等等. 如果把List類型改為List ...

  6. 普罗米修斯监控java项目_java学到什么程度可以出去实习?

    把基础的知识学完,然后再学个框架,比如常见的SSH,SSM之类的,自己能用这个框架做个简单的项目,就可以了 简单的来说就是把下方的视频教程学完就可以找工作了(需要完整的资料可以找up) Java零基础 ...

  7. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常

    我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...

  8. java 原子量_Java原子量 - Rickxue的个人空间 - OSCHINA - 中文开源技术交流社区

    所谓的原子量即操作变量的操作是"原子的",该操作不可再分,因此是线程安全的. 为何要使用原子变量呢,原因是多个线程对单个变量操作也会引起一些问题.在Java5之前,可以通过vola ...

  9. cmd怎么实现Java你好_java环境配置以及如何在cmd窗口运行java代码

    对于初学java的人来说,电脑的环境配置也许会让你头疼,但只要你认真一些学习,相信对你来说都是OK的啦~ 首先回到桌面,选择我的电脑,单击右键属性,进入高级系统设置,点击环境变量设置.用户变量选择Te ...

最新文章

  1. JCIFS实现单点登录
  2. 散列--数据结构与算法JavaScript描述(8)
  3. SAPSQL_IN_ITAB_ILLEGAL_OPTION dump
  4. 谷歌 colab_使用Google Colab在Python中将图像和遮罩拆分为多个部分
  5. 注意扩展方法的返回值类型
  6. Junit4常用注解
  7. C语言链表为什么倒着输出,关于链表倒着存,正着输出。
  8. Arcgis 使用ArcToolbox实现数据统计
  9. 【鲲鹏 DevKit黑科技解读】│如何实现全链路系统问题90%精准诊断?
  10. 多核处理器_游戏爱好者的福音!AMD全新一代高性能多核处理器3950X
  11. vue 内存溢出问题解决
  12. 第三季-第8课-系统调用方式文件编程
  13. 韩国李世石跟韩国AI大战,2负一胜
  14. 计算机图片怎么截图快捷键,电脑系统截图快捷键(电脑怎么截图)
  15. MS project中的完成百分比、工时完成百分比和实际完成百分比
  16. chatgpt如何自动生成角色prompt模板
  17. 动规 - 最大子矩阵问题
  18. Google浏览器主页被搜狗导航劫持解决方法(也适用于火狐浏览器)
  19. Tensorflow Serving源码详解
  20. Windows命令行关闭IE代理

热门文章

  1. 计算机管理窗口下的菜单,win7电脑右键打不开管理菜单的详细攻略
  2. java如何实现redis分片存储_面试官:你说一下Redis吧,怎么实现高可用,还有持久化怎么做的?...
  3. 苹果6sp内存可以扩展吗_苹果手机iPhone 12 mini能用6年吗?网友:可以
  4. spring使用JUnit测试,@Autowired无法注入原因
  5. 1-趣味解读DNS工作原理——转载疯猫网络科技
  6. [BZOJ5249][九省联考2018]IIIDX(线段树)
  7. mysql优化之--skip-name-resolve
  8. Activity与Service通信
  9. 如何成长为一名优秀的Web开发人员
  10. 正确理解RESET类型的INPUT控件实现重置效果的机制