首頁 > Java > java教程 > Java 的 Enum 泛型型別參數 `E extends Enum` 如何運作?

Java 的 Enum 泛型型別參數 `E extends Enum` 如何運作?

DDD
發布: 2024-11-26 04:22:17
原創
511 人瀏覽過

How Does Java's Enum Generic Type Parameter `E extends Enum` Work?

Java 枚舉定義:了解帶有型別參數的泛型

Java 的Enum 類別採用了一種特殊的型別參數,乍看之下可能會讓人感到困惑:

class Enum<E extends Enum<E>>
登入後複製

此參數表示一個枚舉型別必須衍生自另一個具有相同型別的枚舉型別 爭論。實際上,型別參數是枚舉型別本身,如下例所示:

public enum StatusCode extends Enum<StatusCode>
登入後複製

在此場景中,E 相當於 StatusCode。因此,E 擴展了 Enum,滿足參數的要求。

此構造允許 Enum API 引用自身,例如在 Enum 中實作Comparable。基類可以執行比較,同時確保僅比較適當的枚舉。

在 C# 中透過 ProtocolBuffers 的介面觀察到類似的概念:

public interface IBuilder<TMessage, TBuilder>
  where TMessage : IMessage<TMessage, TBuilder> 
  where TBuilder : IBuilder<TMessage, TBuilder>

public interface IMessage<TMessage, TBuilder>
  where TMessage : IMessage<TMessage, TBuilder> 
  where TBuilder : IBuilder<TMessage, TBuilder>
登入後複製

這確保訊息和建構器可以適當配對。

值得注意的是,型別參數並不能防止不一致。例如,以下類型是有效的:

public class First extends Enum<First> {}
public class Second extends Enum<First> {}
登入後複製

在這種情況下,Second 將實作 Comparable;而不是 Comparable,這可能會導致意外行為。然而,類型參數的目的是在有效情況下提供好處,而不一定是強制使用一致的用法。

以上是Java 的 Enum 泛型型別參數 `E extends Enum` 如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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