Referenzierung

Status
Nicht offen für weitere Antworten.

Sanix

Top Contributor
Ich übergebe an eine Methode einer anderen Klasse eine leere Variable. Dort wird dann ein Objekt erstellt. Die Variable sollte nun auf dieses Objekt verweisen, tut sie aber nicht.


Code:
		wSpiel.newGame(7, 8, fw);  //fw ist eine statische Variable dieser Klasse des Typs FourWins
		System.out.println(fw);   // ist null


Code:
	public void newGame(int yFields, int xFields, FourWins fw)
	{
		JPanel jpField = new JPanel(new GridLayout(yFields, xFields));
		System.out.println(fw);
		fw = new FourWins(yFields, xFields, jpField);
		add(jpField);
		setVisible(true);
	}
 

Oni

Top Contributor
guten morgen,

probiers mal so, oder so ähnlich:

Code:
FourWins fw;
fw =  wSpiel.newGame(7, 8, fw);  //fw ist eine statische Variable dieser Klasse des Typs FourWins
      System.out.println(fw);



Code:
public FourWins newGame(int yFields, int xFields, FourWins fw)
   {
      JPanel jpField = new JPanel(new GridLayout(yFields, xFields));
      System.out.println(fw);
      fw = new FourWins(yFields, xFields, jpField);
      add(jpField);
      setVisible(true);

      return fw;
   }
 
B

bygones

Gast
Code:
//fw ist eine statische Variable dieser Klasse des Typs FourWins
ich weiß nicht genau wg dem Fehler, wenn ich aber wieder "statisch" les, ist 1. kein gutes Design 2. bestimmt liegt da der Fehler....
 

Sanix

Top Contributor
@Oni Guten Morgen und Danke, so funktioniers jetzt auch.
Ja diese Variablen sind statisch da ich jetzt diese Controller Klasse gemacht habe. Damit ich nicht Objekte hin und herschieben muss, ist diese Klasse statisch und macht sämtliche Steuerungsoperationen. Sämtliche andere Klassen verfügen über keine statische Variable.
 

Mag1c

Top Contributor
Moin,

Sanix hat gesagt.:
aber das Obere sollte doch auch funktionieren oder nicht?

nein, funktioniert so nicht. Innerhalb der Methode ist fw als Methodenparameter eine lokale Variable und verdeckt damit die globale (statische) Variable (falls diese in der gleichen Klasse ist).

Wenn du dort wirklich eine statische Variable verwendest, kannst du dir den Methodenparameter auch sparen. Dann geht das so:

FourWins.fw = ...

(je nachdem, wo fw definiert wird.)

Gruß
Mag1c
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben