Klassenattribut nur 1 mal setzen können

Status
Nicht offen für weitere Antworten.
R

Richard1

Gast
Hallo, hat von euch jemand eine Lösung für das folgende Problem:
ich habe ein einfaches Objekt mit 4 public static final String Konstanten.
Ich kann von dieser Klasse beliebig viele Instanzen erzeugen,
jedoch darf jedes Objekt nur einmal mit einem Wert String Konstanten belegt sein.

Code:
public static final String TYPE_BASIS = "Basis";
	public static final String TYPE_EXTEND = "Erweitert";
	public static final String TYPE_EXTRAG = "Zusatzdienste";
	public static final String TYPE_SERVICE = "Service";

Wenn ich also ein Objekt erzeuge und setze für dieses Objekt TYP_BASIS, so soll
verhindert werden, dass dieser TYP_BASIS von keinem nachfolgend erzeugten Objekt
mehr gesetzt werden?

Grüße Richard
 

AlArenal

Top Contributor
Code:
private static String type;

Irgendwo hast du dann eine Methode

Code:
setType(String type) {
  if (Klasse.type == null) {
    Klasse.type = type;
  }
  // ist Klasse.type gesetzt wird der Aufruf ignoriert
}
 

Tobias

Top Contributor
öh, blubb? Wenn also Objekt A TYPE_BASIS im Konstruktor übergeben bekam, dann soll das später erstellte Objekt B seine Übergabe ignorieren und ebenfalls TYPE_BASIS annehmen?

Code:
class Ignorierer {

     public static final String TYPE_BASIS = "1";
     public static final String TYPE_BLAH = "2";

     private static String ICH_WAR_ZUERST_DA = null;

     public static Ignorierer getInstance(String parameter) {
          if(ICH_WAR_ZUERST_DA == null) {
                ICH_WAR_ZUERST_DA = parameter;
          }
          return new Ignorierer();
     }

     private Ignorierer() {}
}

Nicht schön, aber du hast es nicht anders gewollt.
Dein Programmdesign halte ich allerdings für äußerst fragwürdig...

mpG
Tobias

Verdammt zu langsam!
 
R

Richie

Gast
ok danke euch.

ja bestimmt ist das nicht die schönste lösung aber wie soll ich es auch besser machen
wenn ich ein Objekt habe, von dem beliebig viele instanzen erzeugt werden, aber bestimmte
Attribute dieses Objektes eben nur einmal gesetzt werden dürfen. indem ich dem konstruktor
diese Attribute einfach nicht setze sondern manuell?
Bitte um Vorschläge :-/
 

AlArenal

Top Contributor
Gegenfragen:
- Warum sollen diese nur einmal gesetzt werden können?
- Wie ist das Verhalten definiert, wenn nachträglich geändert werden soll? Schweigen im Walde? Exception?
 

byte

Top Contributor
Ich würde das Ganze mit ner Enum lösen, indem ich mir global merke, welche Elemente der Enum schon vergeben wurden:

Code:
public class Foo {

  public enum Kind {
    BASIS,
    EXTEND,
    EXTRAG,
    SERVICE
  }

  private Kind kind;

  private static Set<Kind> gone = new TreeSet<Kind>();

  public Foo(Kind kind) {
    if(!gone.add(kind)) {
      throw new Exception();
    } else {
      this.kind = kind;
    }
  }

  protected void finalize() {
    try {
      gone.remove(this.kind);
    } finally {
      super.finalize();
    }
  }
}
 
G

Guest

Gast
bei den strings handelt es sich um überschriften, es gibt insgesamt 4. diese beinhalten jeweils listen von verschiedenen aufzählungen.

die weiteren klassen, die sich meiner klasse bedienen zum befüllen des dokuments sind leider so aufgebaut, dass sie keine anderen weg erlauben als diesen, außerdem muss der ablauf sequentiell sein:

also objekt erzeugen, überschrift angeben, beliebig objekte anhängen
objekt erzeugen, neue überschrift angeben, bel. objekte an diese überschrift anhängen
...

es wird ein inhaltsobjekt erzeugt und 1 von 4 static attributen wird gesetzt.
nun operieren auf diesem objekt einige methoden, die als inhalt unter die überschrift gesetzt werden.

die weiteren instanzen, die erzeugt werden, werden nun so lange an die erste angegebene überschrift gehängt, bis ein objekt wieder ein neues attribut (eine neue überschrift) erzeugt.
da man natürlich ohne weiteres beim erzeugen weiterer objekte im mom immer neue überschriften setzen kann, soll dies verhindert werden, da der inhalt zu genau 1 überschrift gehört.
 
G

Guest

Gast
ok ich danke euch vielmals. ich denke die ansätze sind schon ganz brauchbar für micht.
ich werde es irgendwie lösen können.

gruß
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Fujaba - Zugriff auf Klassenattribut Java Basics - Anfänger-Themen 12
G Methoden/Klassenattribut Java Basics - Anfänger-Themen 46
C Klassenattribut über Konstruktor verändern Java Basics - Anfänger-Themen 6
C Anker Punkt setzen. Java Basics - Anfänger-Themen 1
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
L Methode in setText() setzen Java Basics - Anfänger-Themen 6
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
S NIO lesbares und beschreibbares Attribut setzen Java Basics - Anfänger-Themen 1
C Array-Eintrag wieder auf Null setzen Java Basics - Anfänger-Themen 3
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
D Best Practice Konvention - Klassenmembers auf null setzen? Java Basics - Anfänger-Themen 2
F In Eclipse Haltepunkt bei Event setzen? Java Basics - Anfänger-Themen 1
das_leon JOptionPane Titel setzen Java Basics - Anfänger-Themen 1
P Cursor in JTextField setzen Java Basics - Anfänger-Themen 11
N wert für progress auf 100% setzen Java Basics - Anfänger-Themen 5
M Binären Baum Kinder setzen Java Basics - Anfänger-Themen 12
F Koordinaten nach 360° auf 0° setzen Java Basics - Anfänger-Themen 2
I Prozessname setzen Java Basics - Anfänger-Themen 8
S Das Anführungszeichen(") Zeichen in einen String setzen Java Basics - Anfänger-Themen 1
R Property Value als null setzen Java Basics - Anfänger-Themen 1
C Klassen Positionszähler auf Buchstaben setzen Java Basics - Anfänger-Themen 14
M Umgebungsvariable JDK/JRE? PATH setzen Java Basics - Anfänger-Themen 5
N Server Zeit zur lokalen Zeit setzen. Java Basics - Anfänger-Themen 0
S Classpath Findet die Klasse nicht classpath setzen? Java Basics - Anfänger-Themen 8
F Erste Schritte Label Text vor Methodenaufruf setzen Java Basics - Anfänger-Themen 17
I Date zu 01.01.<year> setzen Java Basics - Anfänger-Themen 1
M zufälliges Setzen von Schiffen in while klappt nicht immer Java Basics - Anfänger-Themen 3
C [Greasmonkey] Maus Coursor position setzen Java Basics - Anfänger-Themen 1
K Selbst renderndes Object auf null setzen Java Basics - Anfänger-Themen 1
M Umgebungsvariable JFileChooser#setCurrentDirectory via Properties setzen? Java Basics - Anfänger-Themen 5
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
M Die Breite bei der Gui richtig setzen. Java Basics - Anfänger-Themen 1
X Vererbung Setzen auf Null bei Subklassen Java Basics - Anfänger-Themen 2
N Fokus setzen nachdem JFrame in Vordergrund geholt wurde Java Basics - Anfänger-Themen 7
I Variablen Wie initialisiert man in Java eine Variable ohne das Setzen von 0 oder einer anderen Zahl? Java Basics - Anfänger-Themen 8
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
R Classpath Setzen von class Verzeichnissen Java Basics - Anfänger-Themen 2
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
Ernesto95 BufferedImage Teilbereich wieder transparent setzen Java Basics - Anfänger-Themen 16
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
S Ermitteln und Setzen der Attribute eines Objektes Java Basics - Anfänger-Themen 6
N Erste Schritte Tausender Trennzeichen setzen Java Basics - Anfänger-Themen 5
J JRadioButton in JTable setzen Java Basics - Anfänger-Themen 4
A JLabel erst auf null dann auf einen Wert setzen Java Basics - Anfänger-Themen 7
H Panel in Variable setzen möglich? Java Basics - Anfänger-Themen 10
Helgon Focus setzen Java Basics - Anfänger-Themen 6
E Erste Schritte AbstractTableModel Werte setzen mit setValueAt Java Basics - Anfänger-Themen 10
B eclipse Oberfläche zurück setzen Java Basics - Anfänger-Themen 2
C Leerzeichen im char Array setzen Java Basics - Anfänger-Themen 33
L Methoden In einer Klasse ein Attribut aus einer anderen Klasse setzen Java Basics - Anfänger-Themen 8
M TableColumn Breite setzen Java Basics - Anfänger-Themen 9
M Monat setzen Java Basics - Anfänger-Themen 18
Fab1 Buttons auf ein Hintergrundbild(JFrame) setzen Java Basics - Anfänger-Themen 24
U Passwort auf JButton setzen. Java Basics - Anfänger-Themen 2
M JAVA_HOME setzen xubuntu Java Basics - Anfänger-Themen 2
S Input/Output Neuen InputStream System.in setzen Java Basics - Anfänger-Themen 11
K JTable AbstractTableModel Header setzen Java Basics - Anfänger-Themen 6
L Applet: Parameter setzen Java Basics - Anfänger-Themen 12
M Image Metadaten setzen Java Basics - Anfänger-Themen 2
M HttpPut mimeType setzen Java Basics - Anfänger-Themen 2
E Titel und Größe vom JFrame setzen Java Basics - Anfänger-Themen 6
Z Fokus auf anderes Programm setzen Java Basics - Anfänger-Themen 3
S import - Anweisung; Setzen der Classpath Java Basics - Anfänger-Themen 2
N Objectnamen neu setzen? Java Basics - Anfänger-Themen 20
G Verzeiflung bei JDateChooser Datum setzen Java Basics - Anfänger-Themen 3
J Elegante Art mehrere Label mit einem icon zu setzen Java Basics - Anfänger-Themen 13
J JAVA_HOME und path setzen bei windows 7 Java Basics - Anfänger-Themen 5
radiac Datentypen RANDOM-punkt setzen INNERHALB eines BEREICHes Java Basics - Anfänger-Themen 2
D Classpath setzen Java Basics - Anfänger-Themen 4
W Koordinaten mit System.in.read() setzen Java Basics - Anfänger-Themen 2
J jComboBox auf default setzen wie? Java Basics - Anfänger-Themen 3
C Schach(matt) setzen Java Basics - Anfänger-Themen 13
D JFrame Icon setzen? Java Basics - Anfänger-Themen 8
L Lucene Classpath unter linux setzen Java Basics - Anfänger-Themen 8
H Farbe setzen Java Basics - Anfänger-Themen 5
J Klassen richtig in Relation setzen Java Basics - Anfänger-Themen 3
B Classpath setzen - UNTER MAC OS X Java Basics - Anfänger-Themen 2
R jLabel lässt sich nicht public setzen?? Java Basics - Anfänger-Themen 15
S JRadioButton - Wert setzen aus Datenbank Java Basics - Anfänger-Themen 4
N Exception richtig setzen Java Basics - Anfänger-Themen 2
S Schleife und farbwerte setzen Java Basics - Anfänger-Themen 8
S setrgb () setzen von farbwerte Java Basics - Anfänger-Themen 4
R Enum und dann setter Setzen? Java Basics - Anfänger-Themen 44
S Pixel auf Screen setzen Java Basics - Anfänger-Themen 4
J Dateipfade systemunabhängig setzen Java Basics - Anfänger-Themen 3
F JAVA_HOME automatisch setzen? Java Basics - Anfänger-Themen 2
M Offenes JFrame auf visible setzen? Java Basics - Anfänger-Themen 6
schroedi JAVA_HOME setzen unter Debian Java Basics - Anfänger-Themen 8
H Probleme, TableColumn-Breite zu setzen Java Basics - Anfänger-Themen 4
S log4j pfad per umgebungsvariable setzen? Java Basics - Anfänger-Themen 2
L Windows-Umgebungsvariablen mit Java setzen? Java Basics - Anfänger-Themen 11
S BBCodes in einen String setzen Java Basics - Anfänger-Themen 7
G Plugins einbinden und Classpath setzen Java Basics - Anfänger-Themen 4
S bbcodes bei markierten text setzen Java Basics - Anfänger-Themen 2
M Daten in Tabelle setzen. Java Basics - Anfänger-Themen 6
F Scanner an den Zeilenanfang wieder setzen Java Basics - Anfänger-Themen 2
T Checkbox in jtable: boolean wert direkt setzen - wie? Java Basics - Anfänger-Themen 1
G Pfad zu java.exe setzen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben