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.

相關文章
相關標籤/搜索