• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odwołanie do obiektu innej klasy

Cloud VPS
0 głosów
2,559 wizyt
pytanie zadane 12 lipca 2016 w Java przez kaminki Obywatel (1,030 p.)

Mam coś takiego:

Metoda w pierwszym kontrolerze wysyła daną do obiektu section ( println jest aby sprawdzić czy dobrze zapisało, i jest ok)

	@FXML
	public void sendWidthRectangle(){	
		section.setWidthRectangle(Double.parseDouble(widthRectangle.getText()));
		System.out.println("b: " + section.getWidthRectangle());
	}

Teraz mam druga metodę w innej klasie. Tworzę obiekt section2 klasy konstruktora gdzie jest powyższa metoda. Później odwołuje sie do tego obiektu section i chcę pobrać wartość aby wyświetlić w FXML w pozycji Label szerokosc.

	@FXML
	private void sendStrengthClassOfConcrete(){
		szerokosc.setText(String.valueOf(section2.section.getWidthRectangle()));
	}

 

I jest tu problem bo wyświetla cały czas 0. Wygląda tak jakby nie widziało przypisywanej wartości bo jak na próbę przypisze jakąś wartość to wyświetla. Nie wiem co zrobić aby przekazywało ta zmienna i ja pokazało. 

1 odpowiedź

0 głosów
odpowiedź 12 lipca 2016 przez mbabane Szeryf (79,260 p.)

pytanie czy section2 to jest ten sam obiekt, dla ktorego zostala wywolana (wczesniej) metoda sendWidthRectangle?

komentarz 12 lipca 2016 przez kaminki Obywatel (1,030 p.)

metoda sendWidthRectangle została wywołana na section. section2 utworzyłem bo potrzebuję się odwołać do danych z obiektu section w innej klasie niż jest utworzony ten obiekt.

komentarz 12 lipca 2016 przez kaminki Obywatel (1,030 p.)
pierwsza metoda działa prawidłowo bo println zwraca wartość przypisaną. A druga metoda nie widzi tej wartości. Tak jakby jej nie było ale jest bo pierwsza metoda zwraca. Może troszkę zagmatwałem
komentarz 12 lipca 2016 przez kaminki Obywatel (1,030 p.)

Poszło ale nie wiem czy to powinno tak być:

zrobiłem statyczny obiekt

static RectangularSection section = new RectangularSection();

a Tu zmieniłem na:

	@FXML
	private void sendStrengthClassOfConcrete(){
		szerokosc.setText(String.valueOf(RectangleController.section.getWidthRectangle()));
	}

 

Wynik jest pozytywny ale można to zrobić inaczej?

komentarz 12 lipca 2016 przez mbabane Szeryf (79,260 p.)
edycja 12 lipca 2016 przez mbabane

static powoduje ze wartosc pola jest taka sama w kazdej instancji obiektu, dlatego zadzialo.

Poprzednia wersja nie dzialala najprawdopodobniej dlatego ze section2 to byla referencja na inna instancje obiektu, niz dla ktorego zostala wywolana metoda sendWidthRectangle

komentarz 12 lipca 2016 przez kaminki Obywatel (1,030 p.)
A działająca wersja ze static jest poprawna? Czy lepiej unikać tego a jak tak to co z tym zrobić?
komentarz 12 lipca 2016 przez mbabane Szeryf (79,260 p.)

hmm jesli wartosc tego pola jest potrzebna we wszystkich obiektach tej klasy to jest to poprawne roziwazanie, ale jesli jest ono czesto modyfikowane na uzytek jakiegos innego obiektu, metody to bedzie to zle rozwiazanie.

Ale od razu przyznam ze w Javie jestem jeszcze malo usystematyzowany i pewnych rzeczy moge jeszcze nie ogarniac, nie wiedziec.

Co do static to czesto jest wykorzystywane z final, czyli zmienna stala - raz ustawiana, w ksiazkach jest napisane ze samo static bez final jest dosc rzadko spotykane.

Podobne pytania

0 głosów
3 odpowiedzi 1,816 wizyt
pytanie zadane 16 grudnia 2015 w Java przez natrov Gaduła (3,970 p.)
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 18 lipca 2017 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 394 wizyt
pytanie zadane 3 października 2017 w Java przez heartagram Obywatel (1,770 p.)

93,454 zapytań

142,448 odpowiedzi

322,717 komentarzy

62,831 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...