`
elite20130514
  • 浏览: 45034 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

读编写高质量代码整理(八)

阅读更多

java的泛型是类型擦除的。

java泛型加强了参数类型的安全性,减少了类型转换,它与C++模板(template)非常类似,有不同,java的泛型在编译器有效,在运行期被删除。

import java.util.List;
public class Foo {
	//overload
	public void arrayMethod(String[] strArray) {
		
	}
	public void arrayMethod(Integer[] intArray) {
		
	}	
	//overload
	public void listMethod(List<String> stringList) {

	}
	
	public void listMethod(List<Integer> intList) {

	}
	
}

 编译后:

 我们知道方法的重载类型应不同,我们得出的结论是List<Integer>和List<String>的类型是相同的。

我们做个测试

List<String> ls = new ArrayList<String>();
List<Integer> li = new ArrayList<Integer>();
System.out.println(ls.getClass() == li.getClass());

 结果为:true

这边是java泛型引起的问题,在编译后所有的泛型做相应的转化。准换规则如下:

List<String>、List<Integer>、List<T>擦除后的类型是List

推而广之,List<String>[]、List<Integer>[]擦除后的类型为List[]

List<? extends E>,List<? super E>擦除后的类型为List<E>

所以泛型数组初始化时不能声明泛型类型,因为他们的擦除后类型相同。

List list  = new ArrayList<String>();

list instanceof list<String>此类的表达都不能通过编译,因为泛型类型被擦除了。 

 

  • 大小: 36.6 KB
分享到:
评论

相关推荐

    如何编写高质量JS代码(续)

    继续上一篇文章《如何编写高质量JS代码》今次整理一下javascript函数知识点。 2.使用函数 函数给程序员提供了主要的抽象功能,又提供实现机制。函数可以独立实现其他语言中的多个不同的特性,例如,过程、方法、构造...

    如何编写高质量JS代码

    难得挤出一点点时间,绝不睡懒觉,整理总结往日所看的书,只为了可以离写自己的类库近一点。 本文参考自《javascript语言精粹》和《Effective JavaScript》。例子都被调试过,理解过后,我想把一些“深奥”的道理说...

    MATLAB的数据采集与分析系统源代码

    图像处理日益成为一门引人注目、前景远大的学科,而MATLAB语言以强大的科学运算、灵活程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言便捷的接口功能,成为当今国际上科学界最具影响力、最有活力的...

    免费下载:C语言难点分析整理.doc

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    C语言难点分析整理

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    C语言难点分析整理.doc

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全...

    c语言难点分析整理,C语言

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    软件设计与体系结构期末复习笔记(xinhua)

    高质量代码的四个基本特性:(记忆) ① 正确性 ② 简单性 ③ 可读性 ④ 可测试性 软件设计模式(Software Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结...

    2023年 java最新学习资料

    1.java_插件 2.Java学习笔记(必看经典).doc 3.Java注释规范整理.docx 4.java泛型.docx 5.java笔记.txt 6.java调试.doc 7.JDK系统变量的配置.txt ...9.编写高质量Java代码.pdf 10.设计模式pptx 11.输入输出重定向.txt

    java版飞机大战源码-Resources:收集资源

    如何编写高质量的代码 JS Eslint CSS 浏览器调试技巧 编辑器 Java DB SQL Server MyBatis 日志 RESTful 设计模式 前端 项目 浏览器 IE IE添加受信站点会导致网页对话框中不显示浏览器地址。 IE插件开发 跨域 缓存 ...

    Investigate_the_Movie_Database_-TMDb-:用Python编写的代码用于调查10,000部电影

    研究电影数据库(TMDb):目录: ...数据整理: 分析的第二步是数据整理,它包括通过视觉和程序评估TMDb Movies数据集,识别是否存在整洁问题,然后提高其质量,这将有助于我们稍后分析数据并得出结论。数据清理(提

    Flash ActionScript 3.0高级动画教程

    编写网格代码 测试并调整网格 整理成类 使用此类 检测不只是为了碰撞 总结 第二章 转向 行为 行为 2D向量(Vector2D)类 机车(Vehicle)类 转向机车(SteeredVehicle)类 寻找行为 避开行为 到达行为 追捕行为 躲避行为 ...

    react-redux-saga-boilerplate:准备好进行Web和移动应用程序开发的monorepo前端样板。 通过react,redux和redux-saga实现。 用TypeScript编写

    有时由于经济上的时间压力,很难交付高质量的软件。 通过这个项目,我试图提供最佳实践的前端样板。 希望能节省开发人员和其他利益相关者的神经。 知识库 为了完全理解该项目,您应该熟悉以下技术。 (monorepo管理...

    matlab简单计算程序代码-robin:稳健的文档图像二值化

    robin是用Python编写的RO胸像文档图像BIN整理工具。 robin-快速的文档图像二值化工具; 指标-用于衡量二值化质量的脚本; 数据集-DIBCO 2009-2018,《棕榈叶手稿》和我自己的具有原始图像和真实图像的数据集的链接;...

    深入理解JavaScript系列.chm

    1.编写高质量JavaScript代码的基本要点 2.揭秘命名函数表达式 3.全面解析Module模式 4.立即调用的函数表达式 5.强大的原型和原型链 6.S.O.L.I.D五大原则之单一职责SRP 7.S.O.L.I.D五大原则之开闭原则OCP 8.S.O.L.I.D...

    高级C语言详解

    59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 ...

    Transformer架构下的量价选股策略:ChatGPT核心算法应用于量化投资.pdf

    ChatGPT作为基于GPT模型的大型对话式语言模型,不止在文本生成和代码编写领域有着高质量的应用,同时也在其他领域有所涉猎。本篇报告就将聚焦于其核心算法Transformer,在量化投资策略中的运用。

    leetcode题库-MyNote:`13的学习笔记

    Python》(编写高质量Python代码的59个有效方法) 《流畅的python》 源码学习 学习笔记 Python 自用工具代码库 Scheme 学习笔记 Scheme 学习笔记 《计算机程序的构造和解释》 学习笔记及部分例题答案 Verilog DHL 学习...

    CSS三栏布局探讨——中间固定宽度两边自适应宽度

    今天早上在阿当大侠的编写高质量前端代码群中与几位朋友一起探讨和学习了一种用div+css进行的三列(三栏)布局,而且是中间固定左右两边自适应宽度,听起来蛮有意思的。因为以前只是碰到过,左右两列固定而中间...

    毕业设计-采用单Activity多Fragment以及多模块Activity多Fragment的设计模式编写的架 (1).zip

    这里为你收集整理了关于毕业设计、课程设计可参考借鉴的资料一份,质量非常高,如果你投入时间去研究几天相信肯定对你有很大的帮助。到时候你会回来感谢我的。 本资源是经过本地编译测试、可打开、可运行的项目、...

Global site tag (gtag.js) - Google Analytics