set Methode in Klasse geht nicht

evoleena

Erfahrenes Mitglied
Hallo Leute ich habe ein Problem.
Ich habe eine klasse, in der ich eine get und set Methode habe
Code:
public int gety(){
        return y;
    }

public void sety(int _y){
        y = _y;
    }
ich habe mir die Werte vor und nach der set Methode ausgeben lasse, aber er ersetz sie leider nicht durch die neuen.

Woran kann das liegen?

Aufruf im Gui sieht so aus
Code:
Cluster c = (Cluster) Clusters.get(i);
 c.sety(ycord);

Gruss
Evo
 

vfl_freak

Premium-User
Moin Evo,

wo und wie sind denn 'y' im ersten Code resp. 'i' und 'ycord' im zweiten Teil definiert ?

'nen paar mehr Infos wäre schon nett !!

Gruß
Klaus
 

evoleena

Erfahrenes Mitglied
Sorry den Teil hab ich jetzt das geht. habe aber ein neues Problem
ich habe die Klasse CLuster und Datenpunkt
und nun möchte ich bei dem Datenpunkt
Code:
Cluster cluster;

Null setzen wie muss ich das anstellen?
Meine Set Methode sieht so aus
Code:
 public void setCluster(Cluster _cluster) {
        cluster = _cluster;
    }

habs jetzt schon so versucht
Code:
p.setCluster(NULL);
Wie muss ich das machen das das Cluster in dem Datenpunkt auf Null gesetzt wird?

Gruss
Evo
 

evoleena

Erfahrenes Mitglied
Ach und dann hab ich noch eine Frage.

die Cluster die ich anlege sind in einem Vector drin mit dem ich arbeite. Aber kann ich mir eine Kopie der Cluster anlegen, damit ich die ursprünglichen Daten erhalten kann.
Wie geht das?

Gruss
Evo
 
Zuletzt bearbeitet:

Cojote

Erfahrenes Mitglied
Versuch mal
Code:
p.setCluster(null);

Du musst übrigens nicht unbedingt mit _ arbeiten um die Variablennamen zu unterscheiden...folgendes geht auch:
Code:
public void setCluster(Cluster cluster) {
        this.cluster = cluster;
}
Mit this teilst du mit dass du die Instanzvariable cluster meinst, somit ist eine Unterscheidung bei gleichem Parameternamen noch möglich.

Wenn du Daten kopieren willst musst du dir im klaren sein, dass Java ausschließlich mit Referenzen arbeitet, d.h. um eine Kopie zu erhalten muss man die Objekte wirklich kopieren. Normalerweise geschieht dies indem man das zu kopierende Objekte das Interface cloneable implementieren lässt. In der clone-Methode muss dann ein neues Objekt dieses Typs instanziiert werden und alle Daten von Hand kopiert werden (getter->setter Aufrufe z.B.), dieses neue Objekte wird dann von der clone-Methode zurückgegeben. Hierbei darf man auch nicht vergessen, dass z.B. interne Objekte auch wiederum kopiert werden müssen und von diesen internen Objekte wiederum die internen Objekte usw usw. Man spricht in dem Fall von einer Deep-Copy (es wird also alles, was da noch an Objekten drinhängt in die Tiefe mit kopiert). Dies gilt nicht für Basisdatentypen wie int, boolean usw. jedoch für ihr Objektpendant Integer, Boolean,...

Dann müsstest du ein neues Vector Objekt erzeugen...den alten Vector durchlaufen, jedes Element mit der clone-Methode kopieren und im neuen Vector abspeichern.
 
Zuletzt bearbeitet: