知识点:
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;
}