久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 學習資源 > 講師博文 > 泛型簡明解析

泛型簡明解析 時間:2024-02-22      來源:華清遠見

泛型在java中有很重要的地位,無論是開源框架還是JDK源碼都能看到它。

 毫不夸張的說,泛型是通用設計上必不可少的元素,所以真正理解與正確使用泛型,是一門必修課。但是出初學者想學習泛型必不可少的需要先了解集合體系

一 、Collection集合

 

1.1集合概述

 

 集合:集合是java中提供的一種容器,可以用來存儲多個數據。集合和數組既然都是容器,它們有啥區別呢?

數組的長度是固定的。集合的長度是可變的。

 數組中存儲的是同一類型的元素,可以存儲基本數據類型值。集合存儲的都是對象。而且對象的類  型可以不一致。在開發中一般當對象多的時候,使用集合進行存儲。

1.2集合框架

 

 JAVASE提供了滿足各種需求的API,在使用這些API前,先了解其繼承與接口操作架構,才能了解何時采    用哪個類,以及類之間如何彼此合作,從而達到靈活應用。

 集合按照其存儲結構可以分為兩大類,分別是單列集合java.util.Collection 和雙列集合

java.util.Map ,今天我們主要學習Collection 集合

 從上面的描述可以看出JDK中提供了豐富的集合類庫,為了便于初學者進行系統地學習,接下來通過一張圖來描述整個集合類的繼承體系。

 

 其中,橙色框里填寫的都是接口類型,而藍色框里填寫的都是具體的實現類。這幾天將針對圖中所列舉  的集合類進行逐一地講解。

 集合本身是一個工具,它存放在java.util包中。在Collection 接口定義著單列集合框架中最最共性的內容。

1.3Collection 常用功能

 

 Collection是所有單列集合的父接口,因此在Collection中定義了單列集合(List和Set)通用的一些方法, 這些方法可用于操作所有的單列集合。方法如下:

public boolean add(E e) : 把給定的對象添加到當前集合中 。

:清空集合中所有的元素。

 public boolean remove(E e) : 把給定的對象在當前集合中刪除。public boolean contains(E e) : 判斷當前集合中是否包含給定的對象。public boolean isEmpty() : 判斷當前集合是否為空。

public int size() : 返回集合中元素的個數。

public Object[] toArray() : 把集合中的元素,存儲到數組中。

方法演示:

 

 

 

 

tips: 有關Collection中的方法可不止上面這些,其他方法可以自行查看API學習。

二、泛型

 

3.1泛型概述

 

 在前面學習集合時,我們都知道集合中是可以存放任意對象的,利用Object的引用能夠參數任意化,但需要進行強制轉換,這種情況在程序運行時才回出現,是一個安全隱患。本次課討論Java中提供泛型機制來解決這種類型安全隱患的問題。

大家觀察下面代碼:

 

 

 程序在運行時發生了問題java.lang.ClassCastException。為什么會發生類型轉換異常呢?

我們來分析下:由于集合中什么類型的元素都可以存儲。導致取出時強轉引發運行時

ClassCastException。怎么來解決這個問題呢?

 Collection雖然可以存儲各種對象,但實際上通常Collection只存儲同一類型對象。例如都是存儲字符串     對象。因此在JDK5之后,新增了泛型(Generic)語法,讓你在設計API時可以指定類或方法支持泛型,這樣我們使用API的時候也變得更為簡潔,并得到了編譯時期的語法檢查。

泛型:可以在類或方法中預支地使用未知的類型。

 tips:一般在創建對象時,將未知的類型確定具體的類型。當沒有指定泛型時,默認類型為Object

類型。

 

 

 

 

3.2使用泛型作用和應用

 

 概念:泛型是Java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、接口和方法的創建中,分別稱為泛型類、泛型接口、泛型方法。

 

3.3泛型的定義與使用

 

我們在集合中會大量使用到泛型,這里來完整地學習泛型知識。

泛型,用來靈活地將數據類型應用到不同的類、方法、接口當中。將數據類型作為參數進行傳遞。

 

定義和使用含有泛型的類

定義格式:

 

 

例如,API中的ArrayList集合:

 

 

使用泛型: 即什么時候確定泛型。

在創建對象的時候確定泛型

 例如, ArrayList<String> list = new ArrayList<String>();

 

此時,變量E的值就是String類型,那么我們的類型就可以理解為:

 

 

 再例如, ArrayList<Integer> list = new ArrayList<Integer>();

此時,變量E的值就是Integer類型,那么我們的類型就可以理解為:

 

 

舉例自定義泛型類

 

 

使用:

 

 

含有泛型的方法

 

定義格式:

 

 

例如,

 

 

使用格式:調用方法時,確定泛型的類型

 

 

含有泛型的接口

定義格式:

 

 

例如,

 

 

使用格式:

1、定義類時確定泛型的類型

例如

 

 

 

此時,泛型E的值就是String類型。

2、始終不確定泛型的類型,直到創建對象時,確定泛型的類型

例如

 

 

確定泛型:

 

3.4泛型通配符

 

 當使用泛型類或者接口時,傳遞的數據中,泛型類型不確定,可以通過通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object類中的共性方法,集合中元素自身方法無法使用。

通配符基本使用

 泛型的通配符:不知道使用什么類型來接收的時候,此時可以使用?,?表示未知通配符。此時只能接受數據,不能往該集合中存儲數據。

舉個例子大家理解使用即可:

 

 

 

 tips:泛型不存在繼承關系 Collection list = new ArrayList();這種是錯誤的。

通配符高級使用 受限泛型

 之前設置泛型的時候,實際上是可以任意設置的,只要是類就可以設置。但是在JAVA的泛型中可以指定一個泛型的上限和下限。

泛型的上限:

格式: 意義:

泛型的下限:

格式: 意義:

 比如:現已知Object類,String 類,Number類,Integer類,其中Number是Integer的父類

 

上一篇:嵌入式編程常見的8種數據結構

下一篇:人工智能-機器學習

戳我查看嵌入式每月就業風云榜

點我了解華清遠見高校學霸學習秘籍

猜你關心企業是如何評價華清學員的

干貨分享
相關新聞
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部