Java 枚舉定義:了解帶有型別參數的泛型
Java 的Enum 類別採用了一種特殊的型別參數,乍看之下可能會讓人感到困惑:
class Enum<E extends Enum<E>>
此參數表示一個枚舉型別必須衍生自另一個具有相同型別的枚舉型別 爭論。實際上,型別參數是枚舉型別本身,如下例所示:
public enum StatusCode extends Enum<StatusCode>
在此場景中,E 相當於 StatusCode。因此,E 擴展了 Enum
此構造允許 Enum API 引用自身,例如在 Enum
在 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
以上是Java 的 Enum 泛型型別參數 `E extends Enum` 如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!