Homepagebau |
|
|||||
fertige Klasse zum Download
Schwierigkeitsgrad:
Klasse downloadenversion: 13.12.2003 |
|
|
Aufzählungstypen wurden für Java ab Version 5 eingeführt. Mit der Klasse EnumerationTy, können sie aber auch schon mit Version 1.2 bis 1.4 Aufzählungstypen in ihre älteren Anwendungen integrieren. Diese Klasse können Sie downloaden und als Erweiterung der Sprache verwenden.
Aufzählungen in Java 5
Farbpalette als Aufzählungstyp
enum farben = {rot, gruen, schwarz};
farben farbpalette = farben.rot;Diese Syntax ist quasi identisch zu Aufzählungstypen in C++
Aufzählungen in Java vor Version 5
Farbpalette als Aufzählungstyp
... mit Hilfe der Klasse EnumerationTy ist nun folgende Implementierung möglich
String[] farben = new String[] {"rot", "grün", "schwarz"};
EnumerationTy farbpalette = new EnumerationTy(farben, "rot");In Java 1.x ist der Code leider etwas länger als in Java 5: er funktioniert allerdings ebenso gut.
praktische Beispiele in Java 1.2
Zahlenmengen
int[] hexzahlen = new int[] {0, 8, 16, 32, 64};
EnumerationTy hexa = new EnumerationTy(hexzahlen
, 8);
EnumerationTy deci = new EnumerationTy(new int[] {0, 10, 20}, 10);
if (hexa.contains(0)) {} // true: 0 ist Element der Grundmenge {0,8,16,32,64}
if (deci.contains(8)) {} // false: 8 ist kein Element der Grundmenge {0,10,20}
if (hexa.set(8)) {} // das funktioniert - aber:
if (deci.set(8)) {} /* EnumerationTy.EnumTypeException !!!
denn: 8 ist kein Element der Grundmenge {0,10,20}
System.out.println(hexa.get()); // gibt "8" aus
Bitte beachten sie, dass die instanzspezifische Methode .get() als Rückgabewert immer ein Objekt vom Typ Object liefert.
Sie müssen also eventuell eine Typkonvertierung durchführen, falls sie weiter mit dem Wert arbeiten möchten. Zum Beispiel:
if (hexa.get() == new Integer(8)) {} // ist false !!!
int myNumber = (new Integer( (hexa.get()).toString() )).intValue();
if (myNumber == 8) {} // aber: dieser Vergleich ergibt trueMengen mit gemischten Typen
Sie können - und das ist das Besondere - auch Aufzählungen von Objekten verschiedener Typen angeben.
Dazu muss es sich aber um Referenztypen handeln. Werttypen müssen durch ihre Hüllklassen repräsentiert werden.
Float myFloat = new Float(1.0);
Integer myInt = new Integer(2);
String myString = "abc";
Object[] myCollection = new Object[] {
myFloat
,
myInt
,
myString
};
EnumerationTy mix = new EnumerationTy(myCollection,
myString
);
System.out.println(mix.get()); // gibt "abc" aus
Klassenspezifikation
Hinweis: Die Schnittstellenspezifikation EnumerationInterface ist dem ZIP-Archiv beigelegt
EnumerationTy public class EnumerationTy implements EnumerationInterface { // öffentliche Konstruktorfunktionen
EnumerationTy (int[] values);
EnumerationTy (double[] values);
EnumerationTy (float[] values);
EnumerationTy (char[] values);
EnumerationTy (Object[] values);EnumerationTy (int chosenValue);
EnumerationTy (double chosenValue);
EnumerationTy (float chosenValue);
EnumerationTy (char chosenValue);
EnumerationTy (Object chosenValue);EnumerationTy (int[] values, int chosenValue) throws EnumerationTy.EnumTypeException;
EnumerationTy (float[] values, float chosenValue) throws EnumerationTy.EnumTypeException;
EnumerationTy (double[] values, double chosenValue) throws EnumerationTy.EnumTypeException;
EnumerationTy (char[] values, char chosenValue) throws EnumerationTy.EnumTypeException;
EnumerationTy (Object[] values, Object chosenValue) throws EnumerationTy.EnumTypeException;// öffentliche instanzspezifische Methoden
void set(Object newValue) throws EnumerationTy.EnumTypeException; Object get(); boolean contains(Object element); }
Autor: Thomas Meyer |
Home: www.All-Community.de |
Kontakt: |