Maison > Java > javaDidacticiel > Comment fonctionne le paramètre de type générique Enum de Java « E extends Enum » ?

Comment fonctionne le paramètre de type générique Enum de Java « E extends Enum » ?

DDD
Libérer: 2024-11-26 04:22:17
original
549 Les gens l'ont consulté

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

Définition Java Enum : Comprendre les génériques avec les paramètres de type

La classe Enum de Java utilise un paramètre de type particulier qui peut sembler déroutant au premier abord :

class Enum<E extends Enum<E>>
Copier après la connexion

Ce paramètre signifie qu'un type d'énumération doit dériver d'un autre type d'énumération avec le même argument de type. En pratique, l'argument type est le type enum lui-même, comme le montre cet exemple :

public enum StatusCode extends Enum<StatusCode>
Copier après la connexion

Dans ce scénario, E est équivalent à StatusCode. Ainsi, E étend Enum, répondant aux exigences du paramètre.

Cette construction permet à l'API Enum de se référer à elle-même, comme dans Enum implémente Comparable. La classe de base peut effectuer des comparaisons tout en garantissant que seules les énumérations appropriées sont comparées.

Un concept similaire est observé en C# avec les interfaces de 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>
Copier après la connexion

Cela garantit que les messages et les générateurs peuvent être associé de manière appropriée.

Il convient de noter que le paramètre type n'empêche pas les incohérences. Par exemple, les types suivants seraient valides :

public class First extends Enum<First> {}
public class Second extends Enum<First> {}
Copier après la connexion

Dans ce cas, Second implémenterait Comparable au lieu de Comparable, ce qui peut entraîner un comportement inattendu. Cependant, l'intention du paramètre type est d'offrir des avantages dans des cas valides, pas nécessairement d'imposer une utilisation cohérente.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal