Junior
Hoe worden parameters doorgegeven in methoden in Java?
sobes.tech AI
Antwoord van AI
In Java worden parameters in methoden doorgegeven op basis van waarde (pass-by-value).
Primitieve types:
- Er wordt een kopie van de waarde van het primitieve type doorgegeven. Het wijzigen van de parameter binnen de methode heeft geen invloed op de oorspronkelijke variabele buiten de methode.
// Voorbeeld voor primitief type
public void changeValue(int x) {
x = x + 10; // De kopie van x binnen de methode wordt gewijzigd
}
// Gebruik:
int original = 5;
changeValue(original);
// original blijft 5
Objecten (referentietypes):
- Er wordt een kopie van de referentie naar het object doorgegeven. Beide referenties (de originele en die in de parameter) wijzen naar hetzelfde object in het geheugen.
- Het wijzigen van de toestand van het object (bijvoorbeeld, een setter aanroepen, velden wijzigen) via de doorgegeven referentie binnen de methode beïnvloedt het originele object.
- Het opnieuw toewijzen van de parameter aan een nieuw object binnen de methode verandert de originele referentie buiten de methode niet.
// Voorbeeld voor referentietype (object)
public class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public void modifyObject(MyObject obj) {
obj.setValue(100); // De toestand van het originele object wordt gewijzigd
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // Het parameterobjekt verwijst nu naar een nieuw object, de originele referentie verandert niet
}
// Gebruik:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject heeft nu value = 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject verwijst nog steeds naar het oorspronkelijke object met value = 50
Kortom: De waarde van de referentie (het adres) wordt doorgegeven, niet het object zelf. Dit maakt het mogelijk om het object te wijzigen via deze referentie, maar niet om de originele referentie naar een ander object te veranderen.