Heim >Java >javaLernprogramm >Wie funktioniert der generische Enum-Typparameter „E erweitert Enum' von Java?

Wie funktioniert der generische Enum-Typparameter „E erweitert Enum' von Java?

DDD
DDDOriginal
2024-11-26 04:22:17581Durchsuche

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

Java-Enum-Definition: Generika mit Typparametern verstehen

Die Enum-Klasse von Java verwendet einen besonderen Typparameter, der zunächst verwirrend erscheinen mag:

class Enum<E extends Enum<E>>

Dieser Parameter bedeutet, dass ein Aufzählungstyp von einem anderen Aufzählungstyp mit demselben Typ abgeleitet sein muss Argument. In der Praxis ist das Typargument der Aufzählungstyp selbst, wie in diesem Beispiel zu sehen ist:

public enum StatusCode extends Enum<StatusCode>

In diesem Szenario entspricht E StatusCode. Somit erweitert E Enum und erfüllt die Anforderung des Parameters.

Dieses Konstrukt ermöglicht es der Enum-API, auf sich selbst zu verweisen, wie z. B. in Enum implementiert Comparable. Die Basisklasse kann Vergleiche durchführen und dabei sicherstellen, dass nur die entsprechenden Aufzählungen verglichen werden.

Ein ähnliches Konzept wird in C# mit den Schnittstellen von ProtocolBuffers beobachtet:

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>

Dies stellt sicher, dass Nachrichten und Builder dies können entsprechend gepaart werden.

Es ist zu beachten, dass der Typparameter Inkonsistenzen nicht verhindert. Beispielsweise wären die folgenden Typen gültig:

public class First extends Enum<First> {}
public class Second extends Enum<First> {}

In diesem Fall würde Second Comparable implementieren. anstelle von Comparable, was zu unerwartetem Verhalten führen kann. Die Absicht des Typparameters besteht jedoch darin, in gültigen Fällen Vorteile bereitzustellen, und nicht unbedingt darin, eine konsistente Verwendung zu erzwingen.

Das obige ist der detaillierte Inhalt vonWie funktioniert der generische Enum-Typparameter „E erweitert Enum' von Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn