Effictive Java
来源:互联网 发布:python opencv教程 编辑:程序博客网 时间:2024/06/03 18:03
知识点:
1.请不要在新代码中使用原生态类型。
2.消除非受检警告。
3.列表优先于数组。
4.优先考虑泛型,优先考虑泛型方法。
1.请不要在新代码中使用原生态类型。
Java.1.5版本以后就增加了泛型。为什么不要使用原生态类型:
a.泛型提供了安全性和表述性方面的优势,看下面代码,从代码我们就可以知道这个是String的List,并且如果你向里面保存其它的类型,编译直接会不通过,如果使用原生态类型,需要到运行的时候才会报错,非常不安全。
List<String> list = new ArrayList<String>();
b.原生态类型可以使用,只是为了保证以前的非泛型代码可以正常的使用。称为移植兼容性。
2.消除非受检警告。
下面关于非受检警告说几点:
a. 我们在使用泛型过程中,需要尽量消除所有的非受检警告。这样可以确保代码是类型安全的。
b. 如果无法消除警告,但是你知道这里一定是类型安全的,我们可以用@SuppressWarnings("unchecked")注解来禁止这条警告。
c. 注解消除警告的级别一定要是最小的。并且要写下原因。不要直接消除整个类的警告。
3.列表优先于数组。
在使用泛型的时候,要用列表来代替数组,我们看一下原因:
a. 数组只有在运行的时候才会做类型检查,看下面代码,在编译的时候不会报错,运行的时候出错。泛型在编译期间就要保证类型的安全性。所有泛型数组是不允许创建的。泛型和数组在类型检查上矛盾。
Object[] array = new Long[1];array[0] = "test"; 报错
4.优先考虑泛型,优先考虑泛型方法。
我们在写代码的时候,如果想要支持多种类型,优先考虑使用泛型。这样代码更灵活,类型安全性也更强。关于泛型类,泛型方法的写法,可以参考前一节的泛型基础。看一个例子,下面的泛型方法可以支持多种类型的集合合并。
public static <E> Set<E> union(Set<E> s1, Set<E> s2) { Set<E> result = new HashSet<E>(s1); result.allAll(s2); result result;}
阅读全文
0 0
- Effictive Java
- Effictive Java
- Effictive Java 并发摘录
- Effictive Java中学到的一些常识
- Reading Effictive java: static member class (SMC) and nonstatic member class(NSC)
- More Effictive C++读书笔记
- Effictive STL读书笔记
- Effictive C++读书笔记
- Effictive C++笔记
- Effictive C++导读
- Effictive Scala(2)
- 《Effictive C++》读书笔记(一)
- Effictive c++条款38-40
- Effictive GO(一)简介
- Effictive Go(三)名字
- Effictive Go(五)函数
- Effictive C++中的一些笔记总结
- 与时俱进 --effictive c++ 3nd 摘录
- VueJs2.0建议学习路线
- Django学习中后台管理出现的问题
- Kubernetes安装与使用
- July -- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
- qduoj 生化危机
- Effictive Java
- vue 数据绑定实现的核心 Object.defineProperty()
- uploadify上传文件
- 看电视
- Android异步消息处理和应用
- Java核心之异常处理
- 链表--链表K个翻转
- 【NOIP2001普及组T4】1055·背包1(填满型01背包)
- PAT 1046划拳