泛型

来源:互联网 发布:安装python安装方法 编辑:程序博客网 时间:2024/06/14 17:54

Java的参数化类型被成为泛型。允许程序在创建集合是指定集合元素的类型。
Java7以前:List<String> strList = new ArrayList<String>();
Java7以后:List<String> strList = new ArrayList<>();

所谓泛型就是在定义类、接口、方法时使用类型形参,类型形参可以在整个接口、类体内当成类型使用。
注意:
1、当创建带泛型声明的自定义类,为该类定义的构造器时,构造器还是原来的类名,不要增加泛型声明。例如:为Apple<T>类定义构造器,其构造器名依然为Apple,而不是Apple<T>
2、定义类、接口、方法时可以声明类型形参,使用类、接口、方法时应该为类型形参传入实际的类型。
public class A extends Apple<T>{}//错误 应为:
public class A extends Apple<String>{}

调用方法必须为所有的数据形参传入参数值,使用类、接口时可以不为类型形参传入实际的类型参数,如:public class A extends Apple

并不存在泛型类
不管泛型的实际类型参数是什么,它们在运行时总有同样的类(class)。
在静态方法、静态初始化块或静态变量的声明和初始化中不允许使用类型形参。
instanceof运算符后不能使用泛型。

如果Foo是Bar的一个子类型,而G是具有泛型声明的类和接口,G<Foo>并不是G<Bar>的子类型。
数组与泛型不同,Foo是Bar的一个子类型,那么Foo[]依然是Bar[]的子类型。

类型通配符:?,例List

原创粉丝点击