Felder mit Methode verändern

Mo3bius

Mitglied
Hi,
ich kann (relativ) gut in C programmieren. Der Umstieg zu Java ist eigentlich gar nicht so schwer, nur fehlen mir manchmal die Herangehensweise für eine saubere Programmierung.

Mein Problem:

Ich habe ein Programm das erstmal nur aus einer Klasse besteht:
Java:
class Main {

static int numberOne = 0;
static int numberTwo = 0;

public static void main(String[] args) {

setNumber(2,numberOne);
System.out.println(numberOne); // 0

setNumber(2,numberTwo);
System.out.println(numberTwo);  // 0


}

public static setNumber(int newNumber, int field)
{
field = newNumber;
}

}

Was wollte ich hier tun? Ich wollte den Wert der Felder NumberOne und NumberTwo ändern. Klappt nicht, da es kein "Call by reference" aufruf ist. Wie aber schreib ich das richtig? Geht das so in einer Klasse? Bzw. müsste ich erst eine Klasse mit jeweils nur einem Feld schreiben und dann 2 Objekte erzeugen?

Mfg,
Mo3bius
 

Templarthelast

Bekanntes Mitglied
Ich weiß nicht genau, worauf du hinauswillst, aber ich versuche es mal..

Java:
public void setNumber(int numberOne, int numberTwo) {
this.numberOne = numberOne;
this.numberTwo = numberTwo;

}
 
G

Gast2

Gast
In Java gibt es kein call-by-reference, daher kannst du nicht einfach so Felder übergeben und deren Wert ändern.

Bzw. müsste ich erst eine Klasse mit jeweils nur einem Feld schreiben und dann 2 Objekte erzeugen?
Ja, das wäre der übliche Weg.

Mögliche wäre sowas:
Java:
public class Main {
	public static void main(String[] args) {
		ValueObject vo = new ValueObject();
		
		setValueOfObject(42, vo);
		System.out.println(vo.getValue());
	}
	
	private static void setValueOfObject(int value, ValueObject object) {
		object.setValue(value);
	}
}

class ValueObject {
	private int value = 0;

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
	}
}
 

timbeau

Gesperrter Benutzer
Sowas wie
Java:
numberOne = setNumber(2);
public static int setNumber(int nr){
return nr;
}

Natürlich etwas sinnfrei hierbei.
 

Gism0

Mitglied
Java:
class Main {
 
private int numberOne = 0;
private int numberTwo = 0;
 
public static void main(String[] args) 
{
setNumberOne(2);
System.out.println(numberOne); // 0
 
setNumbertwo(2);
System.out.println(numberTwo);  // 0
}

public static void setNumberOne(int zahl)
{
this.numberOne = zahl;
}

public static void setNumberTwo(int zahl)
{
this.numberTwo = zahl;
}
}
 

kaetzacoatl

Bekanntes Mitglied
In Java gibt es kein call-by-reference, daher kannst du nicht einfach so Felder übergeben und deren Wert ändern.
Java:
public Field getField(String name) throws SecurityException, NoSuchFieldException{
		return getClass().getDeclaredField(name);
	}

Natürlich kannst du Felder übergeben!
 

Crian

Top Contributor
Da weiß ich nicht, wie du das meinst. Zustimmend, Ironisch... der Ton fehlt hier irgendwie *zwinkert*


Ich möchte hierauf nochmal eingehen:

Bzw. müsste ich erst eine Klasse mit jeweils nur einem Feld schreiben und dann 2 Objekte erzeugen?

Wenn diese beiden Werte "gleichartig" sind, dann ist der oben gezeigte Wert mit einer Klasse mit einem Objekt und Methoden zum setzen und auslesen (Setter und Getter) der richtige.

Beschreiben aber beide Zahlen zusammen die Eigenschaften von etwas, so kann man sie ruhig gemeinsam als Objektdaten halten.

Beispiel:

Java:
public class Rahmen {
    private int breite;
    private int hoehe;

    public Rahmen(int breite, int hoehe) {
        this.breite = breite;
        this.hoehe = hoehe;
    }

    public int getBreite() {
        return breite;
    }

    public int getHoehe() {
        return hoehe;
    }

    public void setBreite(int breite) {
        this.breite = breite;
    }

    public void setHoehe(int hoehe) {
        this.hoehe = hoehe;
    }

}

Wie du siehst, kannst du dann beide Werte von außen setzen:

Java:
...
Rahmen rahmen = new Rahmen(0, 0);
rahmen.setBreite(70);
rahmen.setHoehe(45);

Vielleicht hilft das.
 

Mo3bius

Mitglied
Danke für die ausführlichen Antworten!

Mein Beispiel ist mit Absicht simpel gehalten, in meinem Anwendungsfall geht es um zwei BufferedImage auf die ich die gleichen/selben (ihr wisst was ich meine ;) ) Methoden anwenden möchte. Auf die Idee den Wert mit return auszugeben hatte ich auch schon. Das funktioniert halt nur mit einer Variable und ich gebe sowieso lieber einen Statuscode zurück.

Ich werde nun einen eigene Klasse für meine Bilder erstellen und damit 2 Objekte erzeugen. EikeB und Crian haben dazu eigentlich alles geschrieben.

Eine einzige Frage hätte ich noch. Macht es Sinn es so wie EikeB zuschreiben:

Java:
public class Main {
    public static void main(String[] args) {
        ValueObject vo = new ValueObject();
        
        setValueOfObject(42, vo);
        System.out.println(vo.getValue());
    }
    
    private static void setValueOfObject(int value, ValueObject object) {
        object.setValue(value);
    }
}
 
class ValueObject {
    private int value = 0;
 
    public int getValue() {
        return value;
    }
 
    public void setValue(int value) {
        this.value = value;
    }
}

oder reicht auch sowas:


Java:
public class Main {
    public static void main(String[] args) {
        ValueObject vo = new ValueObject();
        
        vo.setValue(42);
        System.out.println(vo.getValue());
    }
    
    private static void setValueOfObject(int value, ValueObject object) {
        object.setValue(value);
    }
}
 
class ValueObject {
    private int value = 0;
 
    public int getValue() {
        return value;
    }
 
    public void setValue(int value) {
        this.value = value;
    }
}
 
G

Gast2

Gast
Der erste Weg ist einfach nur nen Umweg für den zweiten, ich hatte da nur deine "Idee" mit der statischen Methode aufgegriffen. Die kannst du natürlich ohne Probleme weglassen und direkt den setter des Objekts aufrufen.
 

timbeau

Gesperrter Benutzer
Das letztere ist mE der korrekte Weg. Du rufst eine Methode eines Objekts auf. Damit hat das Objekt die volle Kontrolle über diese Methode.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
S reflection und felder Java Basics - Anfänger-Themen 12
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
M Spielfeld mit 10x10 Felder Java Basics - Anfänger-Themen 13
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
C Speicherverwaltung für Felder Java Basics - Anfänger-Themen 8
S EINDIMENSIONALE FELDER? Java Basics - Anfänger-Themen 23
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
D Wie werden Felder grau? Java Basics - Anfänger-Themen 26
S generische Felder Java Basics - Anfänger-Themen 2
A Felder Java Basics - Anfänger-Themen 3
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
R Felder unterschiedlichen Typs Java Basics - Anfänger-Themen 9
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
B clone(), Clonable und Felder von Interfacetypen Java Basics - Anfänger-Themen 3
G Felder kopieren Java Basics - Anfänger-Themen 8
G Felder-Länge Java Basics - Anfänger-Themen 2
G Felder zurückgeben? Java Basics - Anfänger-Themen 3
C Früheste Datum aus 3 Felder Java Basics - Anfänger-Themen 20
M Felder innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 2
D Felder vergleichen Java Basics - Anfänger-Themen 14
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
G variable felder in java? geht das? Java Basics - Anfänger-Themen 4
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben