Kodierungstipp - Schnitttypen und Java-Enums [geschlossen]

8

Ü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

  • Bereitstellung einer Instanz, die a zurückgibt Singleton, aber getippt nach dem Eltern / Kind
  • gibt eine Instanz zurück für jedes Elternteil / Kind, getippt angemessen, und einschließlich eines in jedes Elternteil enum

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%     
paulmurray 22.02.2009, 07:34
quelle

2 Antworten

1

Sie könnten stattdessen einfach die Commons Enum-Implementierung verwenden:

Ссылка

ermöglicht das Erstellen von Enums, die dann unterklassifiziert werden können.

    
Jon 01.07.2009 18:49
quelle
0

das ist einfacher, macht es was du willst?

%Vor%     
Ray Tayek 12.03.2011 19:56
quelle

Tags und Links