Überschneidungsarten ermöglichen es Ihnen, Sortierungen mit einer Vererbungshierarchie durchzuführen. Sie können die Implementierung nicht erben, aber Sie können sie an eine Hilfsklasse delegieren.
%Vor%Dies ist nützlich, wenn Sie mehrere verschiedene Enums haben, die eine Art Muster implementieren. Zum Beispiel eine Anzahl von Enum-Paaren, die eine Eltern-Kind-Beziehung haben.
%Vor%Sie können generische Methoden schreiben, die sagen: "Ok, bei einem Aufzählungswert, der ein Elternteil einiger anderer Aufzählungswerte ist, welcher Prozentsatz aller möglichen untergeordneten Aufzählungserklärungen des untergeordneten Typs diesen bestimmten übergeordneten Wert als übergeordnetes hat?", und Habe es alle typsicher und fertig ohne Casting. (zB: "Sea" ist 33% aller möglichen Fahrzeuge und "Green" 20% aller möglichen Pastels).
Der Code sieht so aus. Beachten Sie insbesondere, dass die "Blatt" -Klassen selbst recht ordentlich sind - aber die generischen Klassen haben schrecklich hässliche Deklarationen. Das ist in Ordnung: Sie schreiben sie nur einmal. Sobald die generischen Klassen vorhanden sind, ist es einfach, sie zu verwenden.
Die Hilfsklasse unten hat nur einige statische Methoden. Andere Möglichkeiten zu gehen, gehören
Mit dieser zweiten Option wäre das "children" -Objekt tatsächlich innerhalb des Helfers und reduziert so die Menge an Code, die in den Enumerationen benötigt wird. Sie würden alle einen Helfer instantiieren und alles Schwierige delegieren.
%Vor%