当前位置: 首页 > news >正文

Effective Java

23.请不要在新代码中使用原生态类型

1.泛型(generic)类或接口:声明中具有一个或多个类型参数(type parameter)的类或接口。e.g. List<E>

2.每种泛型可以定义一组参数化的类型(parameterized type)。e.g. List<String>

3.每个泛型定义一个原生态类型。e.g. List

4.使用参数化类型来允许插入任意类型的对象。e.g. List<Object>

5.List<String>是List的子类型,而不是List<Object>的子类型。

6.在不确定或者不在乎集合中元素类型的情况下,可使用无限制的通配符类型。e.g. List<?>

7.通配符类型是安全的,原生态类型是不安全的。

例外:

1.在类文字中必须使用原生态类型。List.class,String[].class,int.class合法,List<String>.class,List<?>.class不合法

2.在参数化类型上使用instanceof操作符是非法的。

-------------------------------------------------------------------------------------------

24.消除非受检警告

1.当程序员能证明引起警告的代码是类型安全的场合下,可以使用@SuppressWarnings("unchecked")注解来禁止这条警告。

2.尽量在可能小的范围内使用SuppressWarnings注解,永远不要在类上使用,因为这很有可能掩盖重要的警告。

3.用注解将禁止该警告的原因记录下来

-------------------------------------------------------------------------------------------

25.列表优先于数组

1.数组是协变的(如果sub是super的子类型,那么数组类型sub[]就是super[]的子类型);

  泛型是不可变的。对于任意两个类型Type1和Type2,List<Type1>既不是List<Type2>的子类型也不是List<Type2>的超类型。

2.数组是具体化的;泛型是通过擦除来实现的。

  泛型只在编译时强化它的类型信息,在运行时丢弃(擦除)它的元素类型信息。

 

转载于:https://www.cnblogs.com/niaomingjian/p/4878227.html

相关文章:

  • 虚拟机克隆后网络配置
  • 解决 居中 问题
  • 提交(post)xml文件给指定url的2种方法
  • Why NO to: MySQL, Symfony, CakePHP, Smarty, etc.
  • grub引导程序
  • 不使用(a+b)/2这种方式,求两个数的平均值
  • 可以动态添加图片的轮播插件
  • nginx rewrite模块探究与实验
  • SpringMVC(六):Spring 整合quartz作业调度框架
  • ecshop中那些有意思的代码
  • 查看死锁原因 /data/anr/traces.txt
  • 如何删除 SQL Server 表中的重复行
  • Android 不通过USB数据线调试的方法
  • Android网络开发之OkHttp--基本用法GET
  • 查看Android应用包名package和入口activity名称
  • Hibernate最全面试题
  • Javascripit类型转换比较那点事儿,双等号(==)
  • java多线程
  • MQ框架的比较
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Node + FFmpeg 实现Canvas动画导出视频
  • Python进阶细节
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Vue学习第二天
  • 编写符合Python风格的对象
  • 欢迎参加第二届中国游戏开发者大会
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 将 Measurements 和 Units 应用到物理学
  • 数据仓库的几种建模方法
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 写代码的正确姿势
  • 一、python与pycharm的安装
  • No resource identifier found for attribute,RxJava之zip操作符
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #git 撤消对文件的更改
  • #WEB前端(HTML属性)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (八)c52学习之旅-中断实验
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三) diretfbrc详解
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Mysql的优化设置
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .jks文件(JAVA KeyStore)
  • .net mvc部分视图
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 使用反射注册事件
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)