Zugriff auf ein Array über eine andere Klasse

Status
Nicht offen für weitere Antworten.

julchen81

Bekanntes Mitglied
Wieder mal hallo,

ich hab ein Programm geschrieben, das funktioniert. Nur weiß ich an einer Stelle nicht, wieso. Vielleicht kann mir das einer erklären:

Ich habe eine Klasse Allocation.java, in der ich
Code:
public String[][]  dataMiddle = new String[100][4];	
public String[][]  dataLeft = new String[100][4];	
public String[][]  dataRight = new String[100][4];

habe. 3 Spalten dieser Arrays fülle ich in dieser Datei.

Um jetzt die 4. Spalte zu füllen, habe ich folgende Methode in Allocation.java geschrieben:
Code:
public void readParam() {
		GetParams gp = new GetParams(dataMiddle, dataLeft, dataRight);
		try {
			gp.readParams();		
		} catch (IOException ioEx) {
			System.out.println("Fehler beim Füllen der Spalte Wert");
		}
	}

wobei die Klasse GetParams folgende Bestandteile hat:

Code:
public class GetParams {
	public String[][] dataMiddle;
	public String[][] dataLeft;
	public String[][] dataRight;
	
	public GetParams(String[][] dataMiddle, String[][] dataLeft, String[][] dataRight) {
		this.dataMiddle = dataMiddle;
		this.dataLeft = dataLeft;
		this.dataRight = dataRight;
	}

    public readParams() {.... dataMiddle[l][3] = "letzt Spalte";.....}
..........

die Methode readParams füllt dann die noch ausstehende Spalte.

Wie kann es jetzt sein, dass dann nicht nur die Arrays der Klasse GetParams vollständig gefüllt sind, sondern auch in Allocation.java??
Nach meinem Verständnis müssten in Allocation.java weiterhin nur 3 Spalten gefüllt sein. Ich hätte gedacht, ich müsste - um auch hier alle Spalten gefüllt zu haben - readParam folgendermaßen ändern:
Code:
public void readParam() {
		GetParams gp = new GetParams(dataMiddle, dataLeft, dataRight);
		try {
			gp.readParams();
         dataMiddle = gp.dataMiddle;
         dataLeft = gp.dataLeft;
         dataRight = gp.dataRight;		
		} catch (IOException ioEx) {
			System.out.println("Fehler beim Füllen der Spalte Wert");
		}
	}

Weiß jemand, wieso das nicht nötig ist?

Würde mich wirklich interessieren...

LG Julia :wink:
 

julchen81

Bekanntes Mitglied
So, jetzt wieder ich...

hab mir die Beispiele durchgesehen - bzw. auch Beispiele aus einem Buch. Java verwendet also nur Call by Value. Ich verstehe, wieso die swap-Methode nicht greift. Die Methode müsste die Integer-Werte zurückgeben, und dann so aufgerufen werden:
x = swap(...);

(mehr oder weniger, müssten ja 2 Werte zurückgegeben werden, aber mir geht's jetzt nur um's Prinzip).

Und das aber stimmt doch dann mit meinem "Vorfall" nicht überein... bei mir ÄNDERT sich sogar die Tabelle, obwohl ich NICHT explizit dataMiddle = gp.dataMiddle; aufgerufen habe. ???:L

Wie gibt's dann bitte das?

Julia
 
S

SlaterB

Gast
GetParams und der Aufrufer verfügen über dasselbe Arrayobjekt in unterschiedlichen Referenzen/ Variablen

1)
würdest du nun in GetParams der dortigen Variable this.dataMiddle oder dem Parameter des Konstruktors dataMiddle ein neues Array zuweisen,
dann würde das den Aufrufer nicht die Bohne interessieren, der behält sein altes Array bei (falls nicht durch Rückgabewert später überschrieben)

2)
wenn du aber im übergebenen Objekt irgendwas änderst,
dann bekommt das auch der Aufrufer mit, denn beide bearbeiten ja dasselbe Objekt


bei Strings und primitiven Datentypen wie int ist nur Variante 1 möglich, 2 nicht, da Strings und primitiven Datentypen unveränderbar sind
 

julchen81

Bekanntes Mitglied
Guten Morgen,

wenn man nachts nicht einschlafen kann kommt's hin- und wieder vor, dass es 'klick' hat und man versteht Dinge plötzlich besser, als noch ein paar Stunden zuvor...

Und SlaterB bestätigt meinen Klick, aber 100%ig hab ich's noch nicht, deshalb hier noch mal neu:
Code:
public class CallByVal {
String[][] array = new String[30][40];

    public CallByVal (String [][] otherArr) {  //otherArr ist nicht Objekt, sondern Kopie von der Referenz darauf
        array = otherArr;
    }
}


Durch array = otherArr geschieht folgendes:
von jetzt an deuten beide Referenzen auf ein- und dasselbe Objekt --> wenn ich jetzt in irgendeiner anderen Methode - sie kann auch in einer anderen Klasse sein - z.B. array[2][3] = "Änderung"; setzte, dann ergibt mir ein System.out.println(otherArr[2][3]) auch "Änderung" aus; analog dazu: setze ich irgendwo anders otherArr[2][3] ="DiesUndDas"; wird mir von nun an auch array[2][3] "DiesUndDas" liefern, oder?
15min später:
-------> Hab grad extra Klassen geschrieben und das getestet, meine Annahme hat sich bestätigt!

Wenn ich jetzt im Konstruktor von CallByVal statt array = otherArr folgendes schreibe:
Code:
bray[0][0] = otherArr  [0][0];
bray[0][1] = otherArr  [0][1];
bray[0][2] = otherArr  [0][2];
bray[1][0] = otherArr  [1][0];
bray[1][1] = otherArr  [1][1];
bray[1][2] = otherArr  [1][2];

dann habe ich tatsächlich 2 unterschiedliche Objekte, und ich kann Einträge des einen verändern, ohne die Einträge des anderen zu beeinflussen.

Soweit doch dann jetzt alles verstanden, oder ist da noch was falsch?

LG Julia
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Erste Schritte Array-Zugriff Java Basics - Anfänger-Themen 10
M Collections Probleme bei Zugriff auf Array Java Basics - Anfänger-Themen 19
A Array Zugriff- Problem Java Basics - Anfänger-Themen 5
G Eigene Klasse als Array, zugriff? Java Basics - Anfänger-Themen 2
M Zugriff auf Objekte aus doppelten Array Java Basics - Anfänger-Themen 16
N Threads: 4 Threads, 4mal Zugriff auf Array soll nicht der gleiche Zugriff sein Java Basics - Anfänger-Themen 4
L Kein Zugriff auf Listen in einem Array Java Basics - Anfänger-Themen 2
T NullPointerException bei Zugriff auf array Java Basics - Anfänger-Themen 3
C Array in Klasse aber keinen Zugriff Java Basics - Anfänger-Themen 7
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
B Methoden Zugriff auf Variable ermöglichen Java Basics - Anfänger-Themen 3
M Zugriff auf Arraylist Java Basics - Anfänger-Themen 7
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben