Konstruktorparameter

Status
Nicht offen für weitere Antworten.

Korkzapfen

Mitglied
Hallo zusammen

Ist es möglich Konstruktorparameter als nicht mandatory zu setzten, also bei Erzeugung eines Objektes müssen nicht alle Parameter befüllt werden?

Java:
public void lagerpositionAnlegen(String Bezeichnung, String Artikelnummer, String Hersteller, String Positionsnummer, int Limit)

In diesem Beispiel möchte ich den Integer Limit als "freiwillig" definieren.. Hat jemand eine Ahnung wie das geht?

Danke
 

hdi

Top Contributor
Es gibt auch varargs . (Variable Arguments)
Java:
public MyConstructor(Element... e){}

Also mit den "...". Das heisst du kannst 0 bis theoretisch unendlich Instanzen vom Typ Element reinlegen. Es gibt aber Einschränkungen bei diesen Dingern:

1) Es darf nur 1 einziger vararg in der Parameterliste vorkommen
2) Dieser muss entweder an letzter oder erster Stelle in der Parameterliste vorkommen, weiss ich grad nicht auswendig.

In deinem konkreten Bsp geht es also, da du ein String-varags und dann den int übergeben kannst (oder andersrum)

Ich möchte auch noch einmal darauf aufmerksam machen dass dein Code keinen Konstruktor zeigt, sondern eine Methode, schon klar odeR?
 

Painii

Bekanntes Mitglied
Hallo zusammen

Ist es möglich Konstruktorparameter als nicht mandatory zu setzten, also bei Erzeugung eines Objektes müssen nicht alle Parameter befüllt werden?
Sicher, bau noch einen Konstruktor der eben einen Parameter weniger nimmt.
Sinnvoll wäre dann sicher so eine Struktur:
Java:
public Foo(int einInt){
this.einInt=einInt;
}
public Foo(int einInt, String einString){
this(einInt);
this.einString=einString;
}


Falls deine Parameter nicht-primitiv sind solltest du eh einen null-test machen ob der Parameter überhaupt sinnvoll ist, und kannst ihn dann entsprechend mit einem default-wert oder so ersetzen.
 

hdi

Top Contributor
@painii
Normalerweise delegiert man mehrere Konstruktoren an einen einzigen (und zwar denjenigen mit den meisten Parametern), und kümmert sich um passende Werte. Also:

Java:
public Foo(int einInt){
this(einInt,null); // oder zB statt null irgendeinen Default-Wert wie ""
}
public Foo(int einInt, String einString){
this.einInt = einInt;
this.einString=einString;
}
 

Feld

Mitglied
Bei 2-3 Parametern kann ich die Konstruktoren schreiben, aber was mache ich mit einer funktion die eine zeile in DB einträgt? -Diese hat 12 Parametern, wobei 4 von denen in ca. 95% der Fälle gleich sind - und solche Funktionen werde ich für ein paar Tabelen definieren. -Da gibt es locker 1000 Zeilen an Überladungen - es muss doch eine elegantere Möglichkeit geben?

Ich hatte mal gelesen das man dies irgendwie über map machen kann - finde es aber nicht mehr. Hat jemand eine Idee?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben