Ein Aufzählungstyp (englisch enumerated type) ist ein Datentyp mit einem endlichen Wertebereich. Alle Werte des Aufzählungstyps werden bei der Deklaration des Typs mit Namen definiert. Dabei wird auch eine Reihenfolge festgelegt, die eine Ordnung der einzelnen Werte bestimmt, die Werte können also sortiert werden.
Aufzählungstypen sind z.B. in den Programmiersprachen Pascal, C und C++ ein übliches Mittel. In Java werden Aufzählungen erst seit der Version 5 unterstützt, dafür sind sie hier als echte Objekte mit objektorientierten Mitteln flexibel erweiterbar.
Man unterscheidet typenlose Aufzählungen wie in C, die lediglich Namen für numerische Werte festlegen, und typsichere Aufzählungen wie in Pascal und Java. Typsichere Aufzählungstypen verhindern, dass "Äpfel mit Birnen" verglichen werden. So wäre beispielsweise die Farbe BLAU aus dem unten stehenden Beispiel ein anderer Wert als das erste Element eines anderen Aufzählungstypen (z. B. OBST). Einer Variablen vom Typ Farbe könnte niemals ein Wert vom Typ OBST zugewiesen werden. Dies bringt den Vorteil, dass der Compiler automatisch fehlerhafte Zuweisungen verhindern kann.
Ein Beispiel für einen Aufzählungstyp in Java, der Farben repräsentiert:
enum Farbe {BLAU, GRUEN, ROT, GELB}
Ein Beispiel für einen Aufzählungstyp in Java, der Obst repräsentiert:
enum Obst {APFEL, KIRSCHE, PFLAUME}
Dies ermöglicht die folgende Zuweisung, in welcher der Variable tapetenfarbe vom Typ Farbe der Wert BLAU zugewiesen wird:
Farbe tapetenfarbe = BLAU;
In einer typensicheren Programmiersprache würde folgendes einen Fehler erzeugen:
Farbe tapetenfarbe = APFEL; //FEHLER!