Java kann man einstellen, dass ein Konstruktor nur ein Objekt erzeugt, wenn eine Bedingung herrscht, z.B. dass die übergebene Zahl die Längr 10 haben muss(Java?
3 Antworten
Ich kenne Java nicht aber in cpp schreibst du den Konstruktor ganz normal und die Bedingung führst du dann eben in der Methode auf, in der der Konstruktor aufgerufen wird.
Ich kann mir nicht vorstellen, dass das in Java anders wäre.
Klar aber du kannst eine Instanz in einer Methode anlegen, in der Methode wird dann der Konstruktor in einer If Bedingung aufgerufen, die gegeben sein muss. Der Methode kann dann ja die zu prüfende Variable übergeben werden.
Wie gesagt, ich kenne Java nicht aber es wäre unglaublich schlechter Stil eine Bedingung in den Konstruktor zu schreiben, dafür sind Konstruktoren einfach nicht da, außerdem brauchst du dann ja noch eine static variable die initialisiert sein muss bevor der Konstruktor aufgerufen wird... Das macht man nicht. Auch nicht in Java, das kann ich mir nicht vorstellen.
Du kannst eine Exception werfen, wenn die Anforderungen nicht erfüllt sind oder eine statische Wrapper-Methode dafür nutzen.
Warum soll das vom Konstruktor erledigt werden? Da ist man gewissermaßen schon mit einem Fuß im Grab.
Es ist viel sinnvoller zuvor die Abfrage laufen zulassen.
Zum Beispiel:
ArrayList<Point> punkte = new ArrayList<>();
for (int i = 0; i < 100; ++i) {
if (i < 50) punkte.add(new Point(i, i+1));
}
Grüße, Jacob
Dies bei jeder Verwendung des Konstruktors zu prüfen wäre viel zu aufwändig... Die Klasse kann ja an beliebigen Orten verwendet werden.
Sehe ich nicht so, da man im Allgemeinen ja weiß, wann eine Klasse verwendet werden soll.
Anders herum muss immer eine Exception geworfen werden, ob das so viel besser ist? Zudem findet die Abfrage dann ja auch statt, nur im Konstruktor.
MyClass myClass = new MyClass(); // wie schaut der Abbruch aus?
int x = myClass.getWert();
Ist vielleicht eine Gewöhnungs-Sache, aber ich bin ohne bisher gut ausgekommen.
Ich würde in einem solchen Fall Exceptions nehmen. Auf jeden Fall ist dies besser, als bei jedem Aufruf des Konstruktors die Werte selbst zu prüfen. Verhindert Code Duplication und verhindert somit auch unnötige Maintenance. Wenn du eine Änderung an den Kriterien hast, kannst du diese dann an einem zentralen Ort einmal abändern.
Weil die Aufgabe sagt, dass der Konstruktor das machen soll
Der Konstruktor wird doch in einer Klasse definiert und initialisiert, wie eine Methode