Objekt als Referenz übergeben in Java

4 Antworten

Naja ich nehme an du erzeugst es etwa so:

GUIKlasse g = new GUIKlasse();

Nun kannst du ja einfach mit "this" die Referenz der aktuellen Klasse mitgeben:

GUIKlasse g = new GUIKlasse(this);

Dafür müsstest du natürlich auch im Konstruktor der GUIKlasse ein Parameter vom Typ der Hauptklasse erstellen. 

Ich hoffe ich habe deine Frage richtig verstanden. ;)

Fish9595 
Fragesteller
 21.04.2015, 19:39

So sieht das im Moment aus

public class Hauptklasse{                               public static void main(   String[] args) {                     GUI jf = new GUI(??);                          }
public GUI(Hauptklasse dieHauptklasse) {

Mit this bekomme ich trotzdem eine Fehlermeldung


0
deflox  21.04.2015, 19:43
@Fish9595

Na dann müsstest du in der main Methode zuerst ein neues Hauptklasse Objekt erstellen und diese dann mitgeben:

public class Hauptklasse {
  public static void main(String[] args) {
     Hauptklasse s = new Hauptklasse();
     GUI jf = new GUI(s);
     
     /* Oder ne andre Moeglichkeit */
     GUI jf = new GUI(new Hauptklasse());
  }
}
public GUI(Hauptklasse dieHauptklasse) {
   this.dieHauptklasse = dieHauptklasse;
}
0
deflox  21.04.2015, 19:45
@deflox

Ach ja, und für das brauchst du natürlich auch wieder einen Konstruktor in der Hauptklasse.

0
JavaTheHutt  21.04.2015, 21:52
@deflox

Ein Konstruktor ist immer vorhanden - implizit oder explizit.

0
deflox  21.04.2015, 21:54
@Fish9595

@JavaTheHutt Danke für die Info... Man lernt immer wieder Neues ;)

@Fish9595 Schön, dass ich dir helfen konnte. 

0

In der Regel zeigt die Notwendigkeit, dass zwei Klassen sich gegenseitig kennen, ein schlechtes Design des Programms. In 99% der Fälle kann man diese Probleme eleganter lösen ohne, dass sie sich gegenseitig kennen. 

Was genau hast du denn vor?

Ggf. solltest du genauer erklären was du vor hast, was das für Klassen sind und was sie machen. Eine saubere Lösung würde hier wohl in einer Richtung über die normale Dependency Injection klappen, in der anderen Richtung könnte man z.B. mit Callbacks arbeiten. Wenn beide Klassen aber massiv Funktionen der anderen benutzen ist das oft ein Zeichen dafür, dass es keine zwei Klassen sein sollten oder ein Bindeglied fehlt.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

Hast du es schon mit instanzofobject = new object versucht?

Woher ich das weiß:Berufserfahrung – Berfuserfahrung und Hobby