2013-12-20 8 views

Antwort

1

In Java Enum-Typen als eine Klasse handeln, die mit ihrer einzigartigen erklärt Name. Es ist fast wie jede andere Klasse, die entworfen wurde, um konstante Werte zu erstellen. Kürzlich stieß ich auch auf eine Info, dass vor der Deklaration von Enums in Java eine Enum-ähnliche Klasse erstellt wurde. Genau wie der Artikel, der zu dieser Frage vorgeschlagen wurde, scheint es, dass vor JVM 1.5 klassenbasierte Enums weit verbreitet waren.

können Sie diese Quelle überprüfen: http://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html

Ich denke, es auf Java Aufzählungen eine sehr gute Erklärung ist, und warum sie erstellt werden. Der Artikel behauptet, 3 Vorteile für Enum:

1) Typ Sicherheit.

2) Wenn die Klasse nicht gründlich bearbeitet wurde, war die Enum-Klasse anfällig für Druckprobleme. Wenn der Codierer ein zurückgegebenes Zeichenfolgenergebnis wollte, wurde ein primitiver Wert zurückgegeben. Nach meiner Erfahrung wird dies mit einigen Ergänzungen der Klasse vermieden. Aber die Frage ist, ist es bequem für den Programmierer.

3) Erneut basierte der Zugriff auf einer Instanz der Klasse. Daher kann der Codierer nicht direkt auf die Enum-Option zugreifen. Der Coder muss den Klassennamen verwenden.

Als Ergebnis: Aus Gründen der Übersichtlichkeit und Codelesbarkeit sind Enums eine gute Wahl. Außerdem ähnelt Enum Structure einer einzelnen Klasse, die in einer Trägerklasse verschachtelt ist. Wenn der Programmierer das Enum Design verbessern und seinen eigenen Stil erstellen möchte, kann er auf das alte manuell codierte klassenbasierte System zurückgreifen.

2

Die Java-Standard-Enum-Implementierung ist bereits vollständig klassenbasiert - Sie können beliebige Methoden, Member-Variablen usw. innerhalb von Standard-Java-Enums definieren.

Es gibt eine ausgezeichnete Beschreibung dieser Beispiele in der offiziellen ENUM-Dokumentation:

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

Zusätzlich wird die EnumSet, EnumMap, etc Collection-Klassen extrem leistungsfähig sind und effizient. EnumSet hat eine ähnliche Leistung wie rohe Bitfelder! Sie erhalten nur dann Zugriff auf diese Klassen, wenn Sie eine richtige Enum verwenden.

+0

Na ja, nicht ganz voll - man kann nicht Enum Unterklasse oder von einer anderen Klasse erweitern. –

+1

@AndreyChaschev Related: http://stackoverflow.com/q/1414755/1225328 – sp00m

4

Der Java-Artikel, den du zitierst, stammt aus dem Jahr 2001. Damals hatte Java keine enums, und die Methoden, die der Autor beschreibt, waren das, was Programmierer damals taten, um den Mangel von Java zu umgehen. Java 5 hat Enumles im Jahr 2004 eingeführt und jetzt sind die älteren Pattern veraltet. Ihre Kollegen sind also gefragt: Sie sollten Enums verwenden.

1

Der Hauptunterschied besteht darin, dass Java-Enums einfacher sind, man kann die C# enum-basierte Klassenimplementierung nicht einschalten und die enum-basierte Klasse ist eher eine Klasse als ein aufgezählten Datentyp, d.h. sie kann erweitert werden. Wohingegen enum nicht von einer anderen Klasse abgeleitet werden kann und nicht erweitert werden kann.

Java Alternative für C# ENUM-basierte Klasse könnte wie:

public abstract static class CreditCard { 
    enum CreditCardType{ 
     AMERICAN_EXPRESS, MASTER, VISA, DISCOVER; 
    } 

    CreditCardType type; 

    public abstract void operation1(); 
    public abstract void operation2(); 
} 
0

HALLO Ich werde vorschlagen Enum zu verwenden, wenn Sie wissen, wie es zu benutzen. weil ihre viele Gründe, einige von ihnen sind

  1. benötigt weniger Speicher
  2. einen konstanten Wert mit
  3. weniger Prozesszeit
  4. leicht
  5. Wiederverwendbarkeit
  6. leicht zu verstehen, zu debuggen

so hat es viele adva ntage aber andere Hand es ist auch mit vielen Nachteil

  1. begrenztem Nutzen wie bedeutet, dass wir einige Einschränkungen haben von Enum mit
Verwandte Themen