gegenseitige Methodenaufrufe zweier Klassen

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,

eins habe ich immer noch nicht so richtig heraußen,
wenn ich 2 Klassen habe und ich von der Klasse 1 eine Methode der Klasse 2 aufrufe und diese wieder eine Methode der Klasse 1 aufruft, wie kann ich das dann am Besten machen bzw. wie kann ich die Klassen am Besten miteinander verbinden?

Wenn ich nämlich schreibe:

Code:
in Klasse 1:

Klasse2 k2 = new Klasse2();

und in Klasse 2:

Klasse1 k1 = new Klasse1();

dann bekommt man einen StackOverFlow (eh klar)

Wäre sehr dankbar für Tipps!!


lg
 

Tellerrand

Bekanntes Mitglied
Du meinst etwa folgendes:

class A
B member

class B
A member

Wenn A auf B zeigt soll auch B auf A zeigen?
Also eine bidirektionale Verbindung zweier Objekte?

... ich werde aus der Fragestellung nciht ganz schlau ;)
 
S

SlaterB

Gast
Klasse2 k2 = new Klasse2(this);
dann hat k2 eine Referenz auf k1
 

PollerJava

Top Contributor
Genau, ich würde eine bidirektionale Verbindung zwischen 2 Klassen benötigen,
Wenn man das so macht:

Code:
public class Klasse1
{
Klasse2 k2 = new Klasse2();
}

public class Klasse2
{
Klasse1 k1 = new Klasse1();
}


bekommt man einen StackOverFlow, also ich würde eine andere Möglichkeit benötigen bzw. wie wird das standardmäßig gemacht??

lg
 

Tellerrand

Bekanntes Mitglied
Dann nochmal zu meinem Beispiel, hoffe das geht in die Richtung und hilft dir.

Code:
class A {
  member B
  
  void setMember(B mem) {
    this.member = mem;
    if(mem.member != this) {
        mem.setMember(this);
    }
  }

}

Analog für Klasse B.
Also die Referenz nur setzen wenn sie noch nicht stimmt.

EDIT: (natürlich noch public und ordentlich formatieren, etc ... auf die schnelle ist das halt eher pseudo code)

EDIT2: korektur ;)
 

PollerJava

Top Contributor

Versteh schon, alles klar!!!!!



Ist das Standard außer den ports in einer Klasse (also innere Klassen)
oder was ist da die beste, sauberste Methode??



lg
 

mikachu

Top Contributor
ich würd das so machen, dass das aktive objekt prüft, ob das übergebene mit den eigenen übereinstimmt...

Code:
class A { 
  B member;
  
  void setMember(B mem) { 
    if(!member.equals(mem)) { 
        member = mem;
    } 
  } 

}
 

PollerJava

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Das Sauberste wäre wohl, wenn du dir das Observer-Pattern ansiehst ;) .

Das kenne ich, habe ich schon x- male implementiert, kann es aber für diese Frage nicht verwenden,


Vielen Dank für die Antworten,

lg
 

The_S

Top Contributor
Wenn du noch Lust hast mit mir zu diskutieren ;) :

Warum nicht?

Wenn du keine Lust hast, einfach ignorieren :p
 
S

SlaterB

Gast
was sollte das denn hier bringen?
an Objekten werden Operation aufgerufen, das passiert 100x im 200 Zeilen Code,
willst du die gesamte Objektorientierung durch Observer ersetzen?

um aus einem Objekt eine Operation eines anderen aufzurufen macht man
anderesObjekt.operation();

Observer nur wenn nötig, puh, Glück gehabt
 

The_S

Top Contributor
Einfach aus Strukturgründen und Flexibilität. Eine untergeordnete Klasse hat einfach nicht eine Übergeordnete zu kennen. Und mit der ganzen Referenzübergeberei :)-P) verzettelt man sich schnell, wenn man das im großen Stil macht (hab selber hier nen Azubi sitzen, der sowas sehr gerne macht ;) ).

Ist zwar ein bisschen mehr Arbeit, aber imho auch hier übersichtlicher.
 

The_S

Top Contributor
Ih, gleichberechtigte Klassen die machen was sie wollen ... so ganz ohne Controller ... ;) .

Da der Code so ja garantiert nicht in seinem Projekt vorkommt, bin ich von einem allgemeinen Verständnisproblem von PollerJava ausgegangen. Und da weiß man als Außenstehender ja nicht ob es sich hier um Gleichberechtigung handelt oder nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
E Tool um Methodenaufrufe aus bestimmten Pkg zu finden Allgemeine Java-Themen 2
G Methodenaufrufe wie state maschine Allgemeine Java-Themen 4
M Java Klassen und Veerbung mit nichtnachvollziebarer Methodenaufrufe :( Allgemeine Java-Themen 13
V Methodenaufrufe in ein Array strecken Allgemeine Java-Themen 9
B Methodenaufrufe aus String Allgemeine Java-Themen 9
M Methodenaufrufe sind über Interfaces langsamer. Allgemeine Java-Themen 43
P Methodenaufrufe Allgemeine Java-Themen 3
padde479 Anzahl Methodenaufrufe Allgemeine Java-Themen 7
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
B Kollision zweier Kugeln im R² Allgemeine Java-Themen 2
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
C Gemeinsame Oberklasse zweier Generics Allgemeine Java-Themen 10
Tausendsassa Input/Output Problem mit der gleichzeitigen Ausgabe zweier Threads Allgemeine Java-Themen 8
T Parallelisierung zweier BigInteger-Funktionen Allgemeine Java-Themen 6
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
I Vergleich zweier Felder Allgemeine Java-Themen 3
F Vergleich zweier Listen Allgemeine Java-Themen 4
R Objektsynchronisierung zweier Listen?!?! Allgemeine Java-Themen 2
data89 [Kurze Frage] Ähnlichkeit zweier Strings ermitteln Allgemeine Java-Themen 19
J Endlosschleife durch wechselseitigen Zugriff zweier Klassen? Allgemeine Java-Themen 2
MQue Verbindung zweier Klasse Allgemeine Java-Themen 13
D Generalisierungsbeziehung zweier Klassen Allgemeine Java-Themen 5
D Seltsame Ausgabe beim zusammenführen zweier Dateien Allgemeine Java-Themen 14
J vergleich zweier datenstrukturen Allgemeine Java-Themen 6
Z Verknüpfung zweier Klassen! Allgemeine Java-Themen 2
N Vergleich zweier Hashtable / mehrere Enumerations Allgemeine Java-Themen 7
M run()-Code zweier Threads strikt abwechselnd ausführen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben