Java中泛型的基本介绍

1-1.泛型的概述

泛型是一种未知的数据类型。对象

当咱们不知道使用什么数据类型的时候,能够使用泛型。继承

泛型也能够被看做是一个变量,用来接收数据类型。接口

如:ArrayList集合在定义时,不知道集合中都会存储什么类型的数据,因此类型使用泛型,在建立集合对象时,就会肯定泛型的数据类型,把数据类型做为参数传递赋值给泛型E。get

1-2.使用泛型的好处

1).避免了类型转换的麻烦,存储的是什么类型,取出就是什么类型。编译

2).把运行期间的异常(代码运行以后会抛出异常)提早到了编译期(写代码时就会报错)。class

使用泛型的弊端:在使用泛型后,泛型是什么类型,就只能存储什么类型的数据。泛型

2-1..定义和使用含有泛型的类

能够定义一个含有泛型的类,模拟ArrayList类。变量

2-2.定义和使用含有泛型的方法

定义含有方法:泛型定义在方法的修饰符以后,在返回值类型以前。List

格式:
      修饰符 <泛型> 返回值类型 方法名称 (参数列表(使用泛型)){方法体;}数据类型

含有泛型的方法在调用方法的时候肯定泛型的数据类型。

传递的是什么类型的参数,泛型就是什么类型。

2-3.定义和使用含有泛型的接口

含有泛型的类的第一种使用方式是定义接口的实现类,实现接口,指定接口的类型。

格式:
      public interface Iterator<E>{E next();}

Scanner类实现了Iterator接口,并指定接口的泛型为String,并重写next方法。

public final class Scanner implments Iterator<String>{ }

含有泛型的接口的第二种使用方式:

接口使用什么泛型,实现类就使用什么泛型,类跟着接口走,就至关于定义了一个含有泛型的类,建立对象的时候肯定泛型的类型。

格式:

      public interface List<E>{boolean add(E e);

                  E get(int index);}

      public class ArrayList<E> implments List<E> { boolean add(E e);}

即:

第一种方式是实现类肯定泛型类型。

第二种方式是实例化肯定泛型类型。

2-4.泛型的通配符

通配符:? 表明任意的数据类型。

不知道使用什么类型来接收时,此时能够使用,表示未知的通配符。

此时只能接收数据,不能往该集合中存储数据。

使用方式:

不能建立对象使用,只能做为方法的参数使用。

注意:泛型是没有继承概念的,ArrayList<String>集合是不能使用ArrayList<Object>集合接收。

定义集合是不能使用泛型通配符的。

泛型的上限限定:? extends E;表明使用的泛型只能是E类型的子类/自己。

泛型的下限限定:? extends E;表明使用的泛型只能是E类型的父类/自己。

类与类之间的关系:
Integer extends Number extends Object;

String extends Object.

相关文章
相关标签/搜索