首頁 > Java > java教程 > Java 中類型變數可以引用自己的子類型嗎?

Java 中類型變數可以引用自己的子類型嗎?

Mary-Kate Olsen
發布: 2024-12-19 01:30:11
原創
377 人瀏覽過

Can a Type Variable Refer to Its Own Subtype in Java?

型別變數可以引用目前型別嗎?

在程式語言中,類型變數對於表達類型約束和多態性至關重要。然而,這些變數的使用方式存在限制。一個常見的問題是類型變數是否可以引用它所在的確切子類型。

考慮以下程式碼:

這裡,我們使用泛型方法定義一個類別 A foo() 接受型別參數 T。我們也定義了一個重寫方法 foo() 的子類別 B。問題是,foo() 中的型別參數 T 可以用來引用 B 類別中的確切子型別 B 嗎?

答案:

不幸的是,Java 確實可以不允許類型變數引用它們所在的確切子類型。上例中的類型變數 T 在 foo() 範圍內仍然是未知類型,並且不能解析為子類型 B。

奇怪的重複模板模式(自我類型):

要實現具有「自我」類型的所需行為,可以使用設計模式稱為Curiously Recurring Template ( CRT) 模式,也稱為「自型別」。此模式涉及定義抽象基類,這些基類強制執行傳回實例的執行時間類型的約定。衍生類別透過將類型參數解析為自己的類型來實作 self 類型。

以下是Java 中CRT 模式的範例:

雖然此模式提供了一種引用的方法目前類型使用self(),應謹慎使用,因為它會引入誤用的可能性並可能損害型別安全。

以上是Java 中類型變數可以引用自己的子類型嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板