Default Konstruktor und gutes Design
-
Gregor schrieb:
Wenn er keinen Sinn macht, solltest du vielleicht einen privaten Standardkonstruktor schreiben, damit ein Nutzer der Klasse nicht die Gelegenheit kriegt, dummerweise den völlig sinnlosen Default-Konstruktor zu nutzen.
Höh, wenn du einen eigenen Konstruktor definierst, wird doch eh kein Standardkonstruktor mehr erstellt.
-
Optimizer schrieb:
Gregor schrieb:
Wenn er keinen Sinn macht, solltest du vielleicht einen privaten Standardkonstruktor schreiben, damit ein Nutzer der Klasse nicht die Gelegenheit kriegt, dummerweise den völlig sinnlosen Default-Konstruktor zu nutzen.
Höh, wenn du einen eigenen Konstruktor definierst, wird doch eh kein Standardkonstruktor mehr erstellt.
Wenn Du keinen Konstruktor erstellst, wird vom Compiler ein leerer erstellt. Oder verstehe ich Dich vielleicht falsch?
-
Hmm, also ich glaube man sollte diesen dann wohl nicht expliziet definieren, da die Java Entwickler dies auch nicht machen(siehe Source von der Number Klasse).
-
Java Anfänger schrieb:
Wie ist es nun mit guten Programmdesign? Sollte man es selber machen(s.o.), oder es dem Compiler überlassen?
Zeig mal die gesamte Klasse her.
...wenn der Default-Konstruktor eh leer ist, dann schreibt man ihn normalerweise nicht selber.
-
Optimizer schrieb:
Höh, wenn du einen eigenen Konstruktor definierst, wird doch eh kein Standardkonstruktor mehr erstellt.
--> siehe Singleton-Muster. ...aber hast schon Recht: Ich habe wiedermal nicht mitgedacht.
-
Gregor schrieb:
...wenn der Default-Konstruktor eh leer ist, dann schreibt man ihn normalerweise nicht selber.
Danke! Hab mich auch schon an den Java Entwicklern orientiert!
-
Zeig trotzdem mal die Klasse. Ich glaube, nach dem, was du bis jetzt gesagt hast, würde ich sie trotzdem anders als du schreiben.
-
public class MyElementVector{ Vector v = new Vector(); public void add(MyElement e){ } public void remove(int index){ } }
Die Klasse sollte nur als Datenhalter dienen. Über die eigenen add/remove Methoden stelle ich nur sicher, dass sich Elemente vom Typ MyElement darin befinden.
AFAIK braucht man dort keinen explizieten Konstruktor.
-
Naja, ok. Ist eigentlich in Ordnung (bis auf die Tatsache, dass der Vector als private deklariert werden sollte). ...aber nur, wenn null in den Vector gesteckt werden darf.
-
Java Anfänger schrieb:
Die Klasse sollte nur als Datenhalter dienen. Über die eigenen add/remove Methoden stelle ich nur sicher, dass sich Elemente vom Typ MyElement darin befinden.
Es wäre in diesem Fall guter Stil, Java 5.0 zu verwenden und einfach einen entsprechend parametrisierten Vector zu nehmen.
-
Danke Gregor!
Genau deswegen meinte ich, dass ich mir einen explizieten Defaultkonstruktor sparen kann.
-
Gregor meint, du sollst überhaupt nicht so eine Klasse schreiben, sondern Java 5.0 verwenden. Da gehen dann Späße wie
Vector<MyElement> x = new Vector<MyElement>();