本節書摘來華章計算機《資料結構與抽象:java語言描述(原書第4版)》一書中的第1章 ,[美]弗蘭克m.卡拉諾(frank m. carrano) 蒂莫西m.亨利(timothy m. henry) 著 羅得島大學 新英格蘭理工學院 辛運帏 饒一梅 譯 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
程式清單ji1-2展示了前一節開始讨論的類orderedpair。該類假定我們關心對象對中對象的次序。符号在類頭的辨別符orderedpair之後。在定義中,t表示兩個私有資料域的資料類型、構造方法的兩個參數的資料類型、方法getfirst和getsecond的傳回類型,以及方法changeorder中局部變量temp的資料類型。
程式清單ji1-2 類orderedpair

注:在類ordered pair的定義中,t是泛型參數, 跟在類頭的辨別符name之後。
沒有跟在類定義中的構造方法名的後面。
t(不是)可以是資料域、方法參數及局部變量的資料類型,它可以是方法的傳回類型。
示例:建立orderedpair對象。例如,為建立string對象的有序對,可以寫如下的語句:
現在,orderedpair定義中作為資料類型出現的t,都将使用string來替代。
程式設計技巧:在java 7之前,前面這條java語句都需要寫兩遍資料類型string,如下所示:
現在這個形式也是可以的。
下列語句是如何使用對象fruit的示例:
這些語句的輸出是
注意,有序對fruit有orderedpair方法changeorder和getfirst。另外,getfirst傳回的對象是string對象,它有方法length。
還要注意的是,有些是非法的。不能将不是字元串的對象對賦給對象fruit:
問題是,不能将orderedpair轉換為orderedpair。但是可以建立integer對象的對,如下所示:
輸出不出所料是:
現在考慮附錄b的程式清單b-1中給出的類name。如果變量namepair具有類型orderedpair,你就能建立使用繼承派生于name的任何類的對象對。例如,如果類formalname派生于name,但增加了一個頭銜,如先生或女士,則namepair可以含有name和formalname的對象。
建立了類的對象。從java 7版本起,如果将這個表達式賦給一個資料類型是name的變量,則可以忽略表達式中的class-type。即可以寫如下的語句:
類的對象的資料類型是name,不是name。
自測題1 像string或name這樣的類必須定義哪些方法才能讓orderedpair的方法tostring正常工作? 自測題2 考慮程式清單ji1-2中所給出的類orderedpair。假定我們沒有使用泛型,而是忽略,将私有域的資料類型、方法參數及局部變量聲明為object而不是t。這些修改對類的使用有什麼影響?
自測題3 你能使用程式清單ji1-2中定義的類orderedpair,讓兩個不同及不相關的資料類型的對象配對嗎?為什麼?
自測題4 使用附錄c的程式清單c-1中定義的類name,寫語句,将兩名學生組成實驗搭檔。
自測題答案
tostring
2.例如,本章示例中給出的語句,應該有如下的開頭:
orderedpair這個版本的不足是,如果是由不同的和不相關類型的對象組成的對,編譯器不能提示你。是以大概會這樣寫
3.不能。類僅定義了一個泛型。
4.