JAVA泛化及为什么需要泛化
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
比如,有一种类型为List,此时该List可以是任意类型的列表,如Integer,String等等。
如果把List类型改为List<Integer>,则此时只表示整型的列表。
这就是所谓的将操作的数据类型指定为一个参数,这等同于C++里面的模板(template)。
那么这么做有什么好处呢?
比如原来我们有如下的程序:
List myIntList = new LinkedList();// 1
myIntList.add(new Integer(0));// 2
Integer x = (Integer) myIntList.iterator().next();// 3
在第三行中进行了强制类型转换。这个类型转换不仅仅带来了混乱,它还可能产生一个运行时错误(run time error),因为程序员可能会犯错。
程序员如何才能明确表示他们的意图,把一个list中的内容限制为一个特定的数据类型呢?这是generics背后的核心思想。这是上面程序片断的一个泛型版本:
List<Integer> myIntList = new LinkedList<Integer>(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = myIntList.iterator().next(); // 3
注意变量myIntList的类型声明。它指定这不是一个任意的List,而是一个Integer的List,写作:List<Integer>。我们说List是一个带一个类型参数的泛型接口(a generic interface that takes a type parameter),本例中,类型参数是Integer。我们在创建这个List对象的时候也指定了一个类型参数。
另一个需要注意的是第3行没了类型转换。
一句话:就是 给容器指定类型 ,那么在使用这个容器的时候,就不用特意的转型了
相关文章
- java 图片识别 tess4j_JAVA使用Tess4J进行ocr识别
- 我的世界java版需要多少钱_我的世界Java版20w49a快照版[通俗易懂]
- java开发常用四大框架_大牛经验!常用的5款Java框架汇总[通俗易懂]
- java后端开发需要什么_从事Java后端开发,要学习哪些知识和技能?[通俗易懂]
- java中map根据value找key_Java Map和Map<String, Object>类型,map通过value找key
- java 自定义类加载器_JAVA中如何使用应用自定义类加载器「建议收藏」
- java restsharp_RestSharp 一个.NET(C#)的HTTP辅助类组件「建议收藏」
- JAVA外文参考文献_java参考文献近五年
- Java表达式、语句和块
- Java 近期新闻:JDK 21 发布计划、Payara 平台、JBang、JHipster、WildFly
- java的断言(assert)详解编程语言
- Java监控Oracle性能的最佳实践(java监控oracle)
- java spring boot 部署redis详解编程语言
- Java中读取某个目录下的所有文件和文件夹详解编程语言
- 使用Java操作Redis数据库(java中使用redis)
- 之间的交互Redis与Java实现交互的探索(redis和java)
- 失效Redis Java实现自动过期失效(redisjava过期)
- Java实现Redis数据写入(java写入redis)
- 实现Java实现Redis锁的研究与应用(redis锁java)
- Java编程实现MySQL数据库连接(java连mysql数据库)
- 编程玩转Java之Oracle编程实战(java中的oracle)
- Java和Oracle技术融合,汇聚智能新大陆(java oracle包)
- java实现百度坐标的摩卡托坐标与火星坐标转换的示例
- Java基础之java处理ip的工具类