WIe mache ich das? Namen statt ints übergeben.
-
Hallo
ich möchte folgende Funktion implementieren:
setPositionXY( parameter )
Als Parameter soll man folgendes eingeben können:
LEFT, RIGHT, MIDDLE
Man könnte ja jetzt 3 int Konstanten basteln, aber wie stelle ich sicher das der Programmierer dann auch nur diese 3 Werte verwendet? Oder geht das sowieso nur mit Strings?
Sollte ich hierfür lieber 3 private boolean Variablen verwenden und diese dann über eine einzige setPositionXY Funktion setzten, oder eben eine int Variable die 3 verschiedene Werte annehmen kann?
Was könnte die getXYPosition Funktion zurückgeben? Einen String: MIDDLE, LEFT, RIGHT?? oder 1,2,3 (damit kannn ja keiner was anfangen )
Ist alles irgendwie doof? Versteht mich einer
-
als strings, würde ich
if(parameter.equals("middle")){
mach middle}
-
Ich denke, du wirst nicht darum hin kommen, die Einträge zu basteln. Wenn du die Bereichsprüfung vermeiden willst, kannst du auch eine Klasse darum stricken.
public class AlignConstants { private final String align; private AlignConstants(String align) { this.align = align; } public final static LEFT = new AlignConstants("left"); public final static RIGHT= new AlignConstants("right"); public final static MIDDLE= new AlignConstants("middle"); }
Da der Konstrukto private ist, kann ausserhalb der Klasse kein neues Objekt erstellt werden und nur die definierten können angegeben werden.
Nebenbei kannst du auch schneller vergleichen, da du statt equals(Object) den Vergleich mit == nehmen kannst.
/Dirk
-
Hallo Dirk,
das sieht ziemlich gut aus. Wozu allerdings brauche ich den private string align?
Es reicht doch eigentlich aus 3 Objekte LEFT, RIGHT, MIDDLE zu erstellen, die komplett "leer" sind, oder?
Eigentlich muss ich doch nur festlegen, das es nur genau diese 3 Instanzen der Klasse gibt.
-
noch etwas: Wie würdest du die Position dann aabspeichern:
angenommen:
public class Position{ private Variablen; //Was nehm ich da am besten?? public Position(){ } public setPosition(AlignConstants ac){ if(ac == AlignConstants.LEFT){ this.Variable = left; //So: Wie speichere ich die Info jetzt am besten ab?? } }
-
mein zweites Posting könnt Ihr getrost ignorieren! Völliger Blödsinn, meine Frage..
-
heinerL schrieb:
Wozu allerdings brauche ich den private string align?
Es reicht doch eigentlich aus 3 Objekte LEFT, RIGHT, MIDDLE zu erstellen, die komplett "leer" sind, oder?
Eigentlich muss ich doch nur festlegen, das es nur genau diese 3 Instanzen der Klasse gibt.
Ist prinzipiell richtig. Wenn du den String mit übergibst, kannst du, falls es nötig sein sollte, damit lesbarere Debug-Ausgaben produzieren. Vorausgesetzt, du gibst den Wert in der toString()-methode zurück.
/Dirk