Warum verwenden Java-Bibliotheken konstante Ints mehr als enums?

7

Ich bin mir nicht sicher, ob dies eine definitive Aussage ist, aber mir scheint, dass die Java-API konstante Ints über Enums bevorzugt. Von den Teilen der API, die ich verwendet habe, habe ich viele final static int Konstanten gefunden, wo stattdessen ein enum hätte verwendet werden können. Einmal ein solches Beispiel, dass ich gerade diesen Moment anstarre:

Von java.awt.BasicStroke :

%Vor%

Tatsächlich glaube ich nicht, dass ich jemals ein Enum in einer Standard-Java-API-Klasse gesehen habe. Warum ist das?

Ich entwerfe eine API für meine eigene Anwendung (ungefähr eine Milliarde Mal kleiner als die Java-API, aber ich versuche immer noch, klug zu sein) und versuche zu entscheiden, ob ich konstante Ints oder Enums verwenden soll. DIESE Post verweist auf ein sehr beliebtes Buch, das ich noch nicht gelesen habe, was bedeutet, dass enums viele Vorteile haben. Die meisten anderen hoch bewerteten Antworten in diesem Thread stimmen überein. Warum also scheint Java seine eigenen Enum-Fähigkeiten nicht zu benutzen?

    
The111 23.02.2013, 23:52
quelle

2 Antworten

13

BasicStroke pre-dates enum , die in Java 1.5 angekommen sind. Der Code wurde aus Gründen der Abwärtskompatibilität so wie er ist beibehalten. Wenn Sie einen neuen Code schreiben, ist enums definitiv eine bessere Designoption als final static variables.

    
Reimeus 23.02.2013, 23:57
quelle
11

Es hat nichts damit zu tun, dass int int besser ist als eine enum: Es ist nur, dass enum nur in JDK 5 hinzugefügt wurde, also wurde die meiste Java-API geschrieben, bevor enum verfügbar war: konstante ints waren die einzige Option, also wurden sie verwendet .

Wenn die Java-API neu geschrieben wurde, würde sie weit mehr Aufzählungszeichen enthalten, und Sie können davon ausgehen, dass sie in JDK6 oder neuer in der API erscheinen.

Sie sollten wahrscheinlich Enums für Ihre Anwendung verwenden, sie sind im Allgemeinen die bessere Option.

    
Jon Story 23.02.2013 23:55
quelle

Tags und Links