Referencja do obiektu nie przyjmuje wartości null

0

Problem polega na tym, że w funkcji przekazuję obiekt line i przypisuję go do wartości null, a on dalej wskazuje mi na poprzednią wartość. Prosiłbym o wytłumaczenie, czemu to się tak dzieje?

 
@Test
public void test() {
	Line2D line = new Line.Float(10, 10, 10, 10);

	test2(line);
	System.out.println("test2: (" + line.getX1() + ", " + line.getY1()
			+ "); (" + line.getX2() + ", " + line.getY2() + ");");

	test3(line);
	System.out.println("test3: (" + line.getX1() + ", " + line.getY1()
			+ "); (" + line.getX2() + ", " + line.getY2() + ");");
}

public void test2(Line2D line) {
	line.setLine(10, 110, 10, 10);
}

public void test3(Line2D line) {
	line = null;
}

Wynik testu:

 
test2: (10.0, 110.0); (10.0, 10.0);
test3: (10.0, 110.0); (10.0, 10.0);
1

Wartosc null przypisujesz do referencji w metodzie, oryginalna referencja (uzyta do wywolania metody) nie jest zmieniana. W javie wszystko przekazywane jest przez kopiowanie, w tym referencje, wiec majac kopie nie mozesz nadpisac oryginalu.

0

A nie lepiej byłoby zrobić metode zwracającą obiekt zmieniony

 line = test3(line) 

Metoda

 return line =null 

Może tak by działało . Jestem na tel więc nie mam jak sprawdzić :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1