泛 型(java基础学习)
泛型是一个参数化的实例,可传递一个或多个类型来创建实例,进行严格的类型检查。
定义:类<类型1,类型2,类型3.....> 对象名
例:List<E> mylist; E可代表多种类型,如,标准类型,类,接口,也可是子类。。。 必须是单个大写字母。
E是一个类型变量,也是被类型替换的一个变量。之后可用作参数类型,或方法的返回类型或泛型中的方法。
Public boolean add<E o> public E get(int index)
List<String> mylist=new ArrayList<String>();
在java7和以后中可写成:List<String> mylist =new ArrayList<>();
1、使用类型一:
2、泛型作为类型:
3、以键值对方式:
泛型在5.0以后必须带有参数的泛型类型,否则编译器会报错
4、使用“?”通配符
声名一个List<aType>,aType可以是以下几种实例:
A、aType 的一个实例;
B、aType的子类的一个实例,如果aType是类的话;
C、实现aType的类的一个实例,如果aType是个接口的话;
泛型本身也是个java类型,如java.lang.String 、java.io.File一样。将不同的类型变量列表传给一个泛型类型会产生不同的类型。如:
List<Object> list1=new ArrayList<>();和List<String> list1=new ArrayList<>();
尽管String是Object的一个类,但是List<String>与 List<Object>无关,因此,把List<String>传给一个需要List<Object>的方法,就会出错。解决办法是定义中使用通配符“?”。
例:
解决方法:
-----------------------------------
注意:在声名或创建一个泛型时使用通本符是不合法的,如:List<?>list=new ArrayList<?>();
如果要接收任意类型的对象List 就要使用object作为类型变量List<Object> list1=new ArrayList<>();
5、在方法中使用有界通配符
定义:通用类型<? extends 上限类型>
例:接收不同类型的的界限控制。
在此 extends设置了类型变量的上限,也可以使用Super定义变量的下限。
-------------------------------------------------
6、编写泛型类型