泛型方法
泛型方法是引入其自己的類型參數(shù)的方法,這類似于聲明泛型類型,但類型參數(shù)的范圍僅限于聲明它的方法,允許使用靜態(tài)和非靜態(tài)泛型方法,以及泛型類構(gòu)造函數(shù)。
泛型方法的語法包括類型參數(shù)列表,在尖括號(hào)內(nèi),它出現(xiàn)在方法的返回類型之前,對(duì)于靜態(tài)泛型方法,類型參數(shù)部分必須出現(xiàn)在方法的返回類型之前。
Util類包含一個(gè)泛型方法compare,它比較兩個(gè)Pair對(duì)象:
public class Util { public staticboolean compare(Pair p1, Pair p2) { return p1.getKey().equals(p2.getKey()) && p1.getValue().equals(p2.getValue()); } } public class Pair { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; } public void setKey(K key) { this.key = key; } public void setValue(V value) { this.value = value; } public K getKey() { return key; } public V getValue() { return value; } }
調(diào)用此方法的完整語法如下:
Pairp1 = new Pair<>(1, "apple"); Pair p2 = new Pair<>(2, "pear"); boolean same = Util. compare(p1, p2);
該類型已明確提供,通常,這可以省略,編譯器將推斷所需的類型:
Pairp1 = new Pair<>(1, "apple"); Pair p2 = new Pair<>(2, "pear"); boolean same = Util.compare(p1, p2);
此功能稱為類型推斷,允許你將泛型方法作為普通方法調(diào)用,而無需在尖括號(hào)之間指定類型,本主題將在下一節(jié)“類型推斷”中進(jìn)一步討論。
上一篇:泛型原始類型 下一篇:有界類型參數(shù)文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/72924.html
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實(shí)踐沒有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個(gè)完整的工作示例和數(shù)十個(gè)課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識(shí)的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...
類型推斷 類型推斷是Java編譯器查看每個(gè)方法調(diào)用和相應(yīng)聲明的能力,以確定使調(diào)用適用的類型參數(shù),推理算法確定參數(shù)的類型,如果可用,還確定分配或返回結(jié)果的類型,最后,推理算法嘗試查找適用于所有參數(shù)的最具體類型。 為了說明最后一點(diǎn),在下面的示例中,推斷確定傳遞給pick方法的第二個(gè)參數(shù)是Serializable類型: static T pick(T a1, T a2) { return a2; } ...
泛型原始類型 原始類型是沒有任何類型參數(shù)的泛型類或接口的名稱,例如,給定Box泛型類: public class Box { public void set(T t) { /* ... */ } // ... } 要?jiǎng)?chuàng)建參數(shù)化類型的Box,請(qǐng)為形式類型參數(shù)T提供實(shí)際類型參數(shù): Box intBox = new Box(); 如果省略實(shí)際的類型參數(shù),則創(chuàng)建一個(gè)原始類型Box: Box...
泛型類型 泛型類型是通過類型參數(shù)化的泛型類或接口,修改以下Box類以演示此概念。 一個(gè)簡單的Box類 首先檢查一個(gè)對(duì)任何類型的對(duì)象進(jìn)行操作的非泛型Box類,它只需要提供兩個(gè)方法:set,它將一個(gè)對(duì)象添加到box中,get,它將檢索它: public class Box { private Object object; public void set(Object object) ...
泛型 在任何重要的軟件項(xiàng)目中,bug都是不可避免的,仔細(xì)的規(guī)劃、編程和測試可以幫助減少它們的普遍性,但是它們總會(huì)在某個(gè)地方以某種方式潛入你的代碼,隨著新功能的引入以及你的代碼庫在規(guī)模和復(fù)雜性方面的增長,這一點(diǎn)變得尤為明顯。 幸運(yùn)的是,一些錯(cuò)誤比其他錯(cuò)誤更容易被發(fā)現(xiàn),例如,編譯時(shí)錯(cuò)誤可以在早期檢測到,你可以使用編譯器的錯(cuò)誤消息來確定問題所在并立即修復(fù)它。但是,運(yùn)行時(shí)錯(cuò)誤可能會(huì)更成問題,它們并不總是立...
閱讀 3895·2021-09-27 13:36
閱讀 4633·2021-09-22 15:12
閱讀 3073·2021-09-13 10:29
閱讀 1842·2021-09-10 10:50
閱讀 2377·2021-09-03 10:43
閱讀 530·2019-08-29 17:10
閱讀 454·2019-08-26 13:52
閱讀 3267·2019-08-23 14:37