在任何重要的软件项目中,bug都是不可避免的,仔细的规划、编程和测试能够帮助减小它们的广泛性,可是它们总会在某个地方以某种方式潜入你的代码,随着新功能的引入以及你的代码库在规模和复杂性方面的增加,这一点变得尤其明显。程序员
幸运的是,一些错误比其余错误更容易被发现,例如,编译时错误能够在早期检测到,你可使用编译器的错误消息来肯定问题所在并当即修复它。可是,运行时错误可能会更成问题,它们并不老是马上浮出水面,当它们出现时,它可能在程序中的某个点上,与问题的实际缘由相去甚远。算法
泛型经过在编译时检测到更多错误来增长代码的稳定性。编程
简而言之,泛型使类型(类和接口)在定义类、接口和方法时成为参数,与方法声明中使用的更熟悉的形式参数很是类似,类型参数提供了一种使你可使用不一样的输入重用相同的代码的方法,不一样之处在于形式参数的输入是值,而类型参数的输入是类型。segmentfault
使用泛型的代码比非泛型代码有许多好处:安全
Java编译器对泛型代码应用强类型检查,并在代码违反类型安全时发出错误,修复编译时错误比修复运行时错误更容易,这很难找到。测试
如下没有泛型的代码片断须要强制转换:code
List list = new ArrayList(); list.add("hello"); String s = (String) list.get(0);
当重写为使用泛型时,代码不须要强制转换:接口
List<String> list = new ArrayList<String>(); list.add("hello"); String s = list.get(0); // no cast
经过使用泛型,程序员能够实现通用算法,这些算法能够处理不一样类型的集合,能够自定义,而且类型安全且易于阅读。get