亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 Java Java入門 深入學(xué)習(xí)java之泛型

深入學(xué)習(xí)java之泛型

Nov 27, 2019 pm 06:11 PM
java 泛型

深入學(xué)習(xí)java之泛型

概念:泛型,即「參數(shù)化類型」。就是將原來具體的型別參數(shù)化,類似方法中的變數(shù)參數(shù),此時型別也定義成參數(shù)形式(可以稱之為型別形參),然後在使用/呼叫時傳入具體的型別(型別實參)。

本質(zhì):為了參數(shù)化類型(在不建立新的類型的情況下,透過泛型指定的不同類型來控制形參具體限制的類型)。也就是說在泛型使用過程中,操作的資料型別被指定為一個參數(shù),這種參數(shù)型別可以用在類別、介面和方法中,分別稱為泛型類別、泛型介面、泛型方法。

三種使用方式:泛型類別、泛型介面、泛型方法

類型通配符:

1 )型別通配符一般是使用?代替具體的類型參數(shù)。例如List 在邏輯上是List,List等所有List<具體型別實參>的父類別。

2)型別通配符上線透過形如List來定義,如此定義就是通配符泛型值接受Number及其下層子類別型別。

泛型提供了編譯時類型安全監(jiān)測機(jī)制,該機(jī)制允許程式設(shè)計師在編譯時偵測到非法的類型。泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的資料類型被指定為一個參數(shù)。例如我們要寫一個排序方法,能夠?qū)φ麛?shù)陣列、字串陣列甚至其他任何類型的陣列進(jìn)行排序,我們就可以使用Java泛型。

1.泛型方法

你可以寫一個泛型方法,該方法在呼叫時可以接收不同類型的參數(shù)。根據(jù)傳遞給泛型方法的參數(shù)類型,編譯器適當(dāng)?shù)靥幚砻恳粋€方法呼叫。

//?泛型方法?printArray?
?????public?static?< E >?void?printArray(?E[]?inputArray?)
?????{?
?????????for?(?E?element?:?inputArray?){?
?????????????System.out.printf(?"%s?",?element?);
?????????}
?????}

1)<? extend T> 表示該通配符所代表的型別是T型別的子類別。

2) 表示該通配符所代表的型別是T型別的父類別。

2.泛型類別

泛型類別的宣告和非泛型類別的宣告類似,除了在類別名稱後面加上類型參數(shù)聲明部分。和泛型方法一樣,泛型類別的型別參數(shù)宣告部分也包含一個或多個型別參數(shù),參數(shù)間以逗號隔開。一個泛型參數(shù),也被稱為一個類型變量,是用來指定一個泛型類型名稱的識別碼。因為它們接受一個或多個參數(shù),這些類別被稱為參數(shù)化的類別或參數(shù)化的類型。

public?class?Box<T>?{
?????private?T?t;
?????public?void?add(T?t)?{
?????????this.t?=?t;
?????}
?????public?T?get()?{
?????????return?t;
?}

3.類型擦除

Java中的泛型基本上都是在編譯器這個層次來實現(xiàn)的。在產(chǎn)生的Java字節(jié)碼中是不包含泛型中的類型資訊的。 使用泛型時加上的型別參數(shù),會被編譯器在編譯時去掉,這個過程就稱為型別擦除。 如程式碼中定義的List和List等類型,在編譯之後都會變成List。 JVM看到的只是List,而由泛型附加的類型資訊對JVM來說時不可見的。 類型擦除的基本過程也比較簡單,第一次是找到用來取代型別參數(shù)的具體類,這個具體類一般是Object。如果指定了類型參數(shù)的上界的話,則使用這個上界,把程式碼中的型別參數(shù)都替換成具體類別。

本文來自?java入門?欄目,歡迎學(xué)習(xí)!

#

以上是深入學(xué)習(xí)java之泛型的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區(qū)級路徑,用於自定義VSCode設(shè)置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級路徑:項目根目錄下的.vscode/settings

在Java的掌握依賴注入春季和Guice 在Java的掌握依賴注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動提交模式,再執(zhí)行多個操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點實現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

了解網(wǎng)絡(luò)端口和防火牆 了解網(wǎng)絡(luò)端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動管理內(nèi)存的機(jī)制,通過回收不可達(dá)對象釋放堆內(nèi)存,減少內(nèi)存洩漏風(fēng)險。 1.GC從根對象(如棧變量、活動線程、靜態(tài)字段等)出發(fā)判斷對象可達(dá)性,無法到達(dá)的對像被標(biāo)記為垃圾。 2.基於標(biāo)記-清除算法,標(biāo)記所有可達(dá)對象,清除未標(biāo)記對象。 3.採用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時較長的MajorGC;Metaspace存儲類元數(shù)據(jù)。 4.JVM提供多種GC器:SerialGC適用於小型應(yīng)用;ParallelGC提升吞吐量;CMS降

See all articles