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

Kolejność tworzenia nowych klas

0 głosów
168 wizyt
pytanie zadane 5 maja 2017 w Java przez SebekMakaron Obywatel (1,290 p.)

Najpierw kod:

taskLeft = new Task(0, Frame.PATH + name, taskCenter);
taskCenter = new Task(1, Frame.PATH + name, taskLeft, taskRight);
taskRight = new Task(2, Frame.PATH + name, taskCenter);

Jak się przyjrzycie każda tworzona klasa jako parametr przyjmuję inna klasę. Mój problem polega na tym iż np gdy tworze klasę pierwsza 'taskLeft' ona przyjmuje parametr klasy 'taskCenter' a ta klasa nie została jeszcze zainicjowana. I moje pytanie brzmi jak to wykonać lub obejść i napisać inaczej aby tworząc każda klasę mieć już stworzoną klasę brzmi to dziwnie i być może jest to niewykonalne, ale proszę was przyjrzyjcie się kodu zrozumcie o co mi tak naprawdę chodzi bo mogłem napisać dość zawile i spróbujcie mi jakoś pomóc z góry dziękuje.

2 odpowiedzi

+1 głos
odpowiedź 5 maja 2017 przez tangarr Mędrzec (155,180 p.)
wybrane 9 maja 2017 przez SebekMakaron
 
Najlepsza

Zainicjuj taskLeft nullem, dodaj metodę ustawiającą brakujące pole i użyj jej po utworzeniu taskCenter.
 

taskLeft = new Task(0, Frame.PATH + name, null);
taskCenter = new Task(1, Frame.PATH + name, taskLeft, taskRight);
taskRight = new Task(2, Frame.PATH + name, taskCenter);
taskLeft.setCenterTask(taskCenter);

 

0 głosów
odpowiedź 5 maja 2017 przez Ehlert Ekspert (215,010 p.)

tworząc każda klasę mieć już stworzoną klasę

 każda tworzona klasa jako parametr przyjmuję inna klasę

W programowaniu rozróżniamy dwa istotne pojęcie: klasa oraz instancja. Klasa jest zarysem jak wygląda coś, zaś instancja jest namacalnym przykładem tego, obiektem.

import java.lang.Math; // headers MUST be above the first class

public class HelloWorld
{
  public static void main(String[] args)
  {
  	Task leftTask;
    Task rightTask;
    leftTask = new Task();
    rightTask = new Task();
    leftTask.referencedVar = rightTask;
    
    rightTask.someNumber = 5;
    System.out.println(leftTask.referencedVar.someNumber);
  }
}

public class Task{
  
  public Task referencedVar;
  public int someNumber = 2;
 
  public Task(){
    //...
  }
  
}

Jak widzisz Java operuje na zmiennych referencyjnych. Jak rozwiązać Twój problem? Nie przekazuj argumentu w konstruktorze tylko zrób setter.

Nie sugeruj się moim kodem za bardzo. Miał Ci pokazać tylko że używasz referencji. 

Podobne pytania

0 głosów
1 odpowiedź 522 wizyt
pytanie zadane 5 kwietnia 2021 w C i C++ przez Beginner555 Bywalec (2,090 p.)
0 głosów
1 odpowiedź 262 wizyt
pytanie zadane 14 kwietnia 2020 w C i C++ przez nanautzin Obywatel (1,510 p.)
0 głosów
2 odpowiedzi 759 wizyt
pytanie zadane 14 stycznia 2018 w C i C++ przez foruminfa Początkujący (310 p.)

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...