• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

java: objekt mit leeren attributen trotz konstruktorvorbelegung

Mitglied seit
08.03.2004
Beiträge
1.574
Reaktionen
0
Ich habe selbst zu erklärungszwecken mal eine Liste geschrieben. Komischerweise habe ich nach aufruf des konstruktors mit new Liste(null, null); zwar ein Listenobjekt (samt adresse), aber alle attribute stehen auf null.

könnt ihr mir sagen woran das liegen könnte? Ich seh den Fehler mal wieder nich :/

also nochmal das es eindeutig ist. nicht anfang.daten liefert null, sondern anfang selbst usw.


Code:
public class link {
	protected Object daten;
	protected link naehster;
		
	public link(Object daten, link naehster){
		this.daten=daten;
		this.naehster= naehster;
	}
}

Code:
public class liste {
	protected link anfang;
	protected link ende;
	protected link vorgaegervomaktuellenzeiger;

	public liste(Object startleer, Object endeleer) {
		link anfang = new link(startleer, null);
		link ende = new link(endeleer, anfang);
		anfang.naehster = ende;
		vorgaegervomaktuellenzeiger = anfang;
	}

... und weitere methoden
 

Bronzegraf

Guest
Du führst im Konstruktor eine lokale Variable ein. Die wird natürlich nach Verlassen desselben wieder weggeworfen.

Anstatt also eine Variable zu deklarieren:
Code:
link anfang = new link(startleer, null);
solltest du lieber
Code:
anfang = new link(startleer, null);
oder
Code:
this.anfang = new link(startleer, null);
belegen.
 

RRA^StArFiRe

Guest
Original geschrieben von Sholvar

Code:
public class liste {
	protected link anfang;
	protected link ende;
	protected link vorgaegervomaktuellenzeiger;

	public liste(Object startleer, Object endeleer) {
		this.anfang = new link(startleer, null);
		this.ende = new link(endeleer, anfang);
		anfang.naehster = ende;
		vorgaegervomaktuellenzeiger = anfang;
	}

... und weitere methoden

mit "link anfang" erzeugst du wahrscheinlich ein anderen platzhalter, der für den focus der methode extra erzeugt wird, und sich danach von selbst in müll wirft.

e: oh 2late ^^
 
Mitglied seit
18.08.2002
Beiträge
2.585
Reaktionen
198
Wenn du dich an die Konvention halten würdest, Klassennamen am Anfang groß zu schreiben, wäre dein Code deutlich besser lesbar.
 
Oben