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.

dquiwh 
Fragesteller
 17.11.2021, 17:32

Ja, aber wie führe ich das in die Methode auf?

0
dquiwh 
Fragesteller
 17.11.2021, 17:33

Der Konstruktor wird doch in einer Klasse definiert und initialisiert, wie eine Methode

0
KolnFC  17.11.2021, 18:08
@dquiwh

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.

0
dquiwh 
Fragesteller
 17.11.2021, 18:40
@KolnFC

klar, aber ich soll ja den konstruktor dann direkt aufrufen und nicht über eine methode.

0

Du kannst eine Exception werfen, wenn die Anforderungen nicht erfüllt sind oder eine statische Wrapper-Methode dafür nutzen.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

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

dquiwh 
Fragesteller
 17.11.2021, 17:43

Weil die Aufgabe sagt, dass der Konstruktor das machen soll

0
Lezurex  17.11.2021, 17:51

Dies bei jeder Verwendung des Konstruktors zu prüfen wäre viel zu aufwändig... Die Klasse kann ja an beliebigen Orten verwendet werden.

0
Bananapeel321  17.11.2021, 17:59
@Lezurex

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.

0
Lezurex  17.11.2021, 18:02
@Bananapeel321

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.

1