計算機程序設計

Java泛型:描述和方法

Java語言的出現開始已經發生了很大的變化,它的功能無疑帶來了積極的時刻。 其中一個顯著的變化是引入了Java的通用或概括的。 此功能不僅使語言更加靈活多變,而且在使數據類型方面要安全得多。

事實是可以創建之前在Java通用代碼引入泛型,不僅在類型的參考對象的條款。 這樣的鏈接可以被分配任何對象。 畢竟,在Java類是隱性的對象類繼承人。 然而,該方法是在從對象到目標類型的對象的表觀轉化與安全相關的許多類型的錯誤的潛在來源。 當使用概括所有的類型轉換是隱式和自動執行,消除了即使發生錯誤的可能性。

Java泛型:說明和示例

讓我們考慮概括如下圖應用到普通班的一個簡單的例子。 然後進行所有的細微之處和Java泛型的細微差別進行詳細的檢查。

注意在類聲明對發生的方式。 類名稱後,立即開角括號,這表明字母T它是一種填料,其是在建立這個類的一個實例的過程中會通過特定的類型替換。 它看起來如下:線對的OBJ =一雙新的()。 應當注意的,而不是牛逼,可以指定任何字母,但是,作為一項規則,使用T,V或E.

注意:起始與第八版本的Java的,在構造聲明參考角括號時可以留空指定目標類型。 這樣的例子可以寫成如上述:對的OBJ =一雙新<>()。

當一個類以這樣的方式聲明,然後在他的身上,而不是特定類型的字段,鏈接,通過您可以使用字母方法返回的對象的。 因為T創建當類對象是由一個特定的類型,在這種情況下第一和第二場將是整數類型的取代。

以下的參數和與firstItem secondItem邏輯,提交給適當的構造也必須是整型或亞類的。 如果您嘗試傳輸創建對象時是從指定什麼不同的數據類型,編譯器不會讓這樣的錯誤。 因此,參數構造當對象將是如下:線對的OBJ =一雙新<>(新的整數(1),新的整數(2))。 這同樣適用於參數和方法setFirst setSecond。 正如你可能已經猜到,方法getFirst getSecond並且將返回整數類型的值。

有幾個參數類類型的全身

在廣義類也可以聲明在尖括號用逗號設置的類型的多個參數。 通過對類下面給出的情況下重新設計。

正如你所看到的,當你在尖括號創建該類的實例應該指示相同數量的類型作為參數。 如果你熟悉這種類型的數據結構的地圖,你可以看到它使用完全相同的原理。 在那裡,所述第一參數指定的密鑰類型,並且所述第二 - 的值的類型。 應當指出的是,類型的傳輸時的對象參數可以重疊。 例如,下面的廣告對類實例是完全正確的:對<字符串,字符串> OBJ。

概括的某些功能

在進一步討論之前,應該指出的是,Java編譯器不產生不同版本的類對的。 事實上,在編制的通用類型的所有信息的過程中被刪除。 相反,你帶來相應的類型,創建Pair類的一個特殊版本。 然而,在該方案仍然只有類的通用版本。 這個過程被稱為Java中通用的清潔型。

需要注意的重要一點。 鏈接到不同版本的同一個Java泛型類的不能指向同一個對象。 也就是說,假設我們有兩個環節:對<整數> OBJ1和對<雙> obj2的。 因此,在線路OBJ1 = OBJ2錯誤。 雖然這兩個變量是類型對的,對象它們所指,是不同的。 這是Java泛型類型安全的一個最好的例子。

對泛型類的限制

它是要知道概括只能用於引用類型很重要,那就是傳遞參數的泛型類的Java參數必須是一個類類型。 這些簡單的類型,如,例如,雙或長,無法轉移。 換句話說,下面的行對類聲明是不允許的:對的物鏡。 然而,這種限制是不是一個嚴重的問題,因為對每個原始類型對應的Java包裝類。 嚴格地說,如果類對要封裝整數,布爾值avtoupakovka做你的一切:對<整型,布爾> OBJ =一雙新<>(25,真正的)。

另一個嚴重的限制是無法創建參數類型的實例。 例如,下面的行會引起編譯錯誤:t個第一=新T()。 這是顯而易見的,因為你不事先知道參數是否通過一個完整的類或抽象,或甚至接口。 這同樣適用於創建數組。

有限的類型

常常存在這樣的情況時,有必要限制可作為參數傳遞到Java泛型類傳遞類型列表中。 讓我們假設,在我們的類對我們要封裝僅適用於他們進一步的數學運算的數值。 要做到這一點,我們需要定義參數類型的上限。 它是由遺傳尖括號中傳遞的所有參數的超類的廣告來實現。 它看起來如下:類對。 在這種方式中,編譯器發現的,而不是參數T可以被取代或數類或其子類之一。

這是一種常見的前台。 這樣的限制通常被用來在一個且相同的類提供兼容性類型參數。 考慮在我們的類對的例子:類對。 在這裡,我們告訴編譯器的類型T可以是任意的,和V型應該是T型或它的一個子類。

限制了“底”是完全一樣的方式,但不是這個詞延伸到拼寫單詞超。 被分類類對說,代替的T可以被取代或一個ArrayList,或它繼承的任何類或接口。

通用的Java方法和構造

在Java中,概括可不僅應用於類,而且方法。 例如,一個通用的方法可以在常規課堂聲明。

如上圖所示,廣告推廣方法也沒什麼大不了的。 夠的方法的返回類型把尖括號和在他們指定類型參數之前。

如果一切都做同樣的構造函數:

在這種情況下尖括號中的設計師的名字前加上的,因為他沒有返回值。 這兩個方案的結果將是:

整型

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhtw.delachieve.com. Theme powered by WordPress.