java全栈工程师:从java后端到全栈,高级电商全栈系统

#1

download:java全栈工程师:从java后端到全栈,高级电商全栈系统

当我们在Java集合框架中引入各种容器时,我们已经接触到了泛型。当时我们对泛型的简单理解是,当ArrayList像这样声明一个ArrayList实例时,它做了一个类型限制,使得它只能包含String类型的元素。泛型在Java中的应用非常广泛,所以我们专门开一章来讲Java泛型的工作原理和应用。
熟悉泛型
事实上,我们在使用ArrayList时已经接触过泛型。如果在创建ArrayList实例时不使用泛型指定其元素的具体类型,那么ArrayList可以放在任何对象(Object的实例)中,但Java编译器只知道该对象实例存储在列表中。因此,在使用它们时,有必要将它们转换成对象所属的特定类(或接口)。
list list = new ArrayList();//没有泛型类型约束,列表元素默认为Object类型

list.add(新字符串(" First my object "));

my object my object =(String)list . get(0);//使用列表元素时需要类型转换

for(对象对象:列表){
//使用前的类型转换
String themy object =(String)an object;


}
复制代码
使用Java泛型可以限制插入ArrayList的对象类型,从ArrayList中检索对象时不需要进行类型转换。
list list = new ArrayList();

list.add(新字符串(" First my object "));

string my object = list . get(0);

for(String obj : list){

}
复制代码
泛型的语法是在支持泛型的类型上定义一个类型。List接口支持泛型,类型是列表中允许的元素类型。创建列表实例和引用时,可以指定相应的泛型类型。例如,这个例程告诉编译器列表元素的类型是字符串。如果没有指定,它是默认的对象类型,所以第一个例程中使用的列表元素是对象类型。
通用定义
技术术语“Java泛型”指的是一组与泛型类型和方法的定义和使用相关的语言特性。在Java中,泛型类型或泛型方法不同于传统类型和方法,因为它们有类型参数。
通过提供替换形式类型参数的实际类型参数,泛型类型被实例化以形成参数化类型。像LinkedList这样的类是具有类型参数e的泛型类型,LinkedList或LinkedList这样的实例称为参数化类型,而String和Integer是它们的实际类型参数。
为什么使用泛型
类似于上面ArrayList的套路,如果仔细了解Java集合框架中的类,会发现它们的方法大多支持泛型类型参数。如果不使用泛型,这些类提供的方法的参数和返回值将是对象类型。现在,以泛型的形式,它们可以将任何Java类型作为参数,并返回相同的值。
程序员通常希望指定一个集合只包含某些类型的元素,比如整数、字符串或自定义类。在引入泛型之前的集合框架中,如果不添加额外的类型检查,就不可能有类似的集合,而且当使用集合元素时,有必要将元素转换回实际类型。引入泛型后,参数的类型检查会在编译时自动添加到代码中,省去了我们很多不必要的代码编写。