Problem mit Klassenvariablen

ceene

Erfahrenes Mitglied
Hallo ihr lieben

Ich bin über ein merkwürdiges Phaenomen gestolpert bei der Programmierung meiner Web-Applikation.
Ich habe mir eine Klasse geschrieben, in der ich bestimmte Werte speichern kann. Von der Klasse habe ich in meiner Applikation 3 Variablen (a,b und c)

a wird mit new erzeugt und es werden ihr Werte zugewiesen, dann erzeuge ich b mit den Werten von und dann c mit den werten von b

Wenn ich nun die Werte von der Varialben c veränder, dann wird automatisch auch die Werte von b verändert, aber nicht von a.

Weiß jemand woran das liegt?
Wenn es c++ wäre würde ich ja sagen der verwendet intern zeiger, aber das kann ja nicht sein oder?
 
Hm, gibst du vllt einmal nur die Werte mit und einmal das Objekt selber? Und wie genau aenderst du die Werte?
 
also meine Klasse sieht wie folgt aus:
Java:
package src.klassen;

public class PersonInformation {
	private String eci;
	private String anrede;
	private String titel;
	private String vorname;
	private String nachname;
	private String psource;
	private String pdat;
	private String plz;
	private String ort;
	private String strasse;
	private String hsnr;
	private String hsource;
	private String hdat;
	private String haushaltsnummer;
	private long personnr;
	private String psourceKey;
	private String hsourceKey;
	private String sperre;
	private String sperreDat;
	private String hausnummer;
	private String hausident;
	private String strassenCode;
	private String ortsCode;
	private String ortsteilnummer;
	
	
	public PersonInformation(String eci, String anrede, String titel, String vorname, String nachname, String pSource,
							String pDat, String plz, String ort, String strasse, String hsnr, String hSource, String hDat, 
							String hh, long nr, String psk, String hsk, String sperre, String sperreDat, String hausnr, String hausident)	{
		setEci(eci);
		setAnrede(anrede);
		setHaushaltsnummer(hh);
		setHsource(hSource);
		setHsnr(hsnr);
		setHdat(hDat);
		setNachname(nachname);
		setOrt(ort);
		setPdat(pDat);
		setPlz(plz);
		setPsource(pSource);
		setStrasse(strasse);
		setTitel(titel);
		setVorname(vorname);
		setPersonnr(nr);
		setPsourceKey(psk);
		setHsourceKey(hsk);
		setSperre(sperre);
		setSperreDat(sperreDat);
		setHausnummer(hausnr);
		setHausident(hausident);
		setOrtsCode("");
		setStrassenCode("");
	}
	public PersonInformation(PersonInformation info)	{
		setEci(info.getEci());
		setAnrede(info.getAnrede());
		setHaushaltsnummer(info.getHaushaltsnummer());
		setHsource(info.getHsource());
		setHsnr(info.getHsnr());
		setHdat(info.getHdat());
		setNachname(info.getNachname());
		setOrt(info.getOrt());
		setPdat(info.getPdat());
		setPlz(info.getPlz());
		setPsource(info.getPsource());
		setStrasse(info.getStrasse());
		setTitel(info.getTitel());
		setVorname(info.getVorname());
		setPersonnr(info.getPersonnr());
		setPsourceKey(info.getPsourceKey());
		setHsourceKey(info.getHsourceKey());
		setSperre(info.getSperre());
		setSperreDat(info.getSperreDat());
		setHausnummer(info.getHausnummer());
		setStrassenCode(info.getStrassenCode());
		setOrtsCode(info.getOrtsCode());
	}
	public PersonInformation()	{
		setEci("");
		setAnrede("");
		setHaushaltsnummer("");
		setHsource("");
		setHsnr("");
		setHdat("");
		setNachname("");
		setOrt("");
		setPdat("");
		setPlz("");
		setPsource("");
		setStrasse("");
		setTitel("");
		setVorname("");
		setPersonnr(0);
		setPsourceKey("");
		setHsourceKey("");
		setSperre("");
		setSperreDat("");
		setHausnummer("");
		setHausident("");
		setOrtsCode("");
		setStrassenCode("");
}

	public void setEci(String eci) {
		this.eci = eci;
	}

	public String getEci() {
		return eci;
	}

	public void setAnrede(String anrede) {
		this.anrede = anrede;
	}

	public String getAnrede() {
		return anrede;
	}

	public void setTitel(String titel) {
		this.titel = titel;
	}

	public String getTitel() {
		return titel;
	}

	public void setVorname(String vorname) {
		this.vorname = vorname;
	}

	public String getVorname() {
		return vorname;
	}

	public void setNachname(String nachname) {
		this.nachname = nachname;
	}

	public String getNachname() {
		return nachname;
	}

	public void setPlz(String plz) {
		this.plz = plz;
	}

	public String getPlz() {
		return plz;
	}

	public void setOrt(String ort) {
		this.ort = ort;
	}

	public String getOrt() {
		return ort;
	}

	public void setStrasse(String strasse) {
		this.strasse = strasse;
	}

	public String getStrasse() {
		return strasse;
	}

	public void setHsnr(String hsnr) {
		this.hsnr = hsnr;
	}

	public String getHsnr() {
		return hsnr;
	}

	public void setHaushaltsnummer(String haushaltsnummer) {
		this.haushaltsnummer = haushaltsnummer;
	}

	public String getHaushaltsnummer() {
		return haushaltsnummer;
	}

	public void setPsource(String psource) {
		this.psource = psource;
	}

	public String getPsource() {
		return psource;
	}

	public void setPdat(String pdat) {
		this.pdat = pdat;
	}

	public String getPdat() {
		return pdat;
	}

	public void setHsource(String hsource) {
		this.hsource = hsource;
	}

	public String getHsource() {
		return hsource;
	}

	public void setHdat(String hdat) {
		this.hdat = hdat;
	}

	public String getHdat() {
		return hdat;
	}

	public void setPersonnr(long nr) {
		this.personnr = nr;
	}

	public long getPersonnr() {
		return personnr;
	}

	public void setPsourceKey(String psourceKey) {
		this.psourceKey = psourceKey;
	}

	public String getPsourceKey() {
		return psourceKey;
	}
	public void setHsourceKey(String hsourceKey) {
		this.hsourceKey = hsourceKey;
	}
	public String getHsourceKey() {
		return hsourceKey;
	}
	public void setSperre(String sperre) {
		this.sperre = sperre;
	}
	public String getSperre() {
		return sperre;
	}
	public void setSperreDat(String sperreDat) {
		this.sperreDat = sperreDat;
	}
	public String getSperreDat() {
		return sperreDat;
	}
	public void setHausnummer(String hausnummer) {
		this.hausnummer = hausnummer;
	}
	public String getHausnummer() {
		return hausnummer;
	}
	public void setHausident(String hausident) {
		this.hausident = hausident;
	}
	public String getHausident() {
		return hausident;
	}
	public void setStrassenCode(String strassenCode) {
		this.strassenCode = strassenCode;
	}
	public String getStrassenCode() {
		return strassenCode;
	}
	public void setOrtsCode(String ortsCode) {
		this.ortsCode = ortsCode;
	}
	public String getOrtsCode() {
		return ortsCode;
	}
	public void setOrtsteilnummer(String ortsteilnummer) {
		this.ortsteilnummer = ortsteilnummer;
	}
	public String getOrtsteilnummer() {
		return ortsteilnummer;
	}
}

und die Varialben erzeuge ich wie folgt:
Java:
PersonInformation persInfoUmzug = new PersonInformation(persInfo);
PersonInformation UmzugSave = new PersonInformation(persInfoUmzug);
 
Zuletzt bearbeitet:
Wuerdest du bitte deinen Post ueberarbeiten und
[ java] code [ /java] (ohne die Leerzeichen) benutzen, anstatt quote? Danke
 
Zuletzt bearbeitet:
Hm, ok warum du die setter im Konstruktor benutzt ist mir net so ganz klar, genauso koenntest du den letzten Konstruktor leer lassen und beim initialisieren der Variablen, diese direkt auf "" setzen. Dieser wird ja aber auch gar net genutzt. Aber das aendert ja nix ^^

Mal zum Verstaendnis:

Java:
Test a = new Test("testName");
Test b = new Test(a);
Test c = new Test(b);

public class Test{
    String name;
    public Test(String name) {
        this.name = name;
    }
    public Test(Test a) {
        setName(a.getName());
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name=name;
    }
}

Und dann sagst du
Java:
c.setName("extra");
und in c und b sind die Namen geaendert?
 

Neue Beiträge

Zurück